Vous pouvez toujours ajouter à l'original .show() la méthode de sorte que vous n'avez pas à déclencher des événements à chaque fois que vous montrer quelque chose ou si vous en avez besoin pour travailler avec du code existant:
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]);
});
}
});
Exemple d'utilisation:
jQuery(function($) {
$('#test')
.bind('beforeShow', function() {
alert('beforeShow');
})
.bind('afterShow', function() {
alert('afterShow');
})
.show(1000, function() {
alert('in show callback');
})
.show();
});
Effectivement cela permet de faire quelque chose beforeShow et afterShow bien que toujours en cours d'exécution du comportement normal de l'original .méthode show ().
Vous pouvez également créer une autre méthode si vous n'avez pas à remplacer l'original .méthode show ().