Обратные вызовы на 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/