Обратные вызовы на JQuery Tipsy скрыть / показать

Я пытаюсь установить функцию обратного вызова после того, как типсы открываются / закрываются.

function addText()
{
    $('#text').html('Tipsy is now open !');
}

$('.tipsy').tipsy(addText);   

Я хочу, чтобы addText() запускался после открытия tipy, но это не так.

Есть ли простой способ сделать это без изменения навеселого кода ядра?

Вот мой jsfiddle: http://jsfiddle.net/Tqcgr/1/

2 ответа

Решение

Было легко добавить обратные вызовы onShow и onHide. Проверьте это: http://jsfiddle.net/Tqcgr/2/

НО вам нужно изменить методы показа и скрытия.

//show
var callback = this.options.onShow,
    element = this.$element[0],
    runCallback = function() {
        if(callback){
            callback.call(element);   
        }
    };

//invoke
if (this.options.fade) {
    $tip.stop().css({opacity: 0, display: 'block', visibility: 'visible'}).animate({opacity: this.options.opacity}, runCallback);
} else {
    $tip.css({visibility: 'visible', opacity: this.options.opacity});
    runCallback();
}

//hide
var callback = this.options.onHide,
    element = this.$element[0],
    runCallback = function() {
        if(callback){
            callback.call(element);
        }                        
    };
    //invoke
if (this.options.fade) {
    this.tip().stop().fadeOut(function() { $(this).remove(); runCallback()});
} else {
    this.tip().remove();
    runCallback();
}

Итак, давайте посмотрим на документацию: http://onehackoranother.com/projects/jquery/tipsy/

Tipsy не поддерживает обратные вызовы, но поддерживает функцию обратного вызова для параметров: например, title. Таким образом, мы могли бы передать наш параметр функции задницы. Эта функция будет делать то, что мы хотим, а затем просто возвращать исходный заголовок, как если бы мы не использовали эту пользовательскую функцию обратного вызова

$(function () {
  function addText(el)
  {
    $('#text').html('Tipsy is now open !');
    return $(el).attr('original-title');
  }

  $('.tipsy').tipsy({
    gravity: 'w',
    title: function() {
      return addText(this);
    }
  });
});

Пример можно посмотреть здесь: http://jsfiddle.net/Rf8qY/

Другие вопросы по тегам