Вы всегда можете добавить к исходному методу .show () , чтобы вам не приходилось инициировать события каждый раз, когда вы что-то показываете, или если вам это нужно для работы с устаревшим кодом:
Расширение Jquery:
jQuery(function($) {
var _oldShow = $.fn.show;
$.fn.show = function(speed, oldCallback) {
return $(this).each(function() {
var obj = $(this),
newCallback = function() {
if ($.isFunction(oldCallback)) {
oldCallback.apply(obj);
}
obj.trigger('afterShow');
};
// you can trigger a before show if you want
obj.trigger('beforeShow');
// now use the old function to show the element passing the new callback
_oldShow.apply(obj, [speed, newCallback]);
});
}
});
Пример использования:
jQuery(function($) {
$('#test')
.bind('beforeShow', function() {
alert('beforeShow');
})
.bind('afterShow', function() {
alert('afterShow');
})
.show(1000, function() {
alert('in show callback');
})
.show();
});
Это фактически позволяет вам делать что-то доShow и AfterShow, в то же время выполняя нормальное поведение исходного метода .show ().
Вы также можете создать другой метод, чтобы вам не приходилось переопределять исходный метод .show ().