您始终可以添加到原始的 .show() 方法中,这样就不必在每次显示内容时触发事件,或者如果需要使用它来处理旧代码:
Jquery extension:
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之前和之后执行某些操作,同时仍然执行原始.show()方法的正常行为。
您还可以创建另一个方法,这样就不必重写原始的 .show() 方法。