有没有办法将命令绑定到fadeIn事件而不必.trigger('fadeIn')?

jef*_*ind 4 jquery events bind

我有一个具有不同模块的交互式表单系统,其中每个模块的表单包含在不同的div元素中.当我从一个模块更改为另一个模块时,我经常这样做:

$('#module_1').hide();
$('#module_2').fadeIn();
Run Code Online (Sandbox Code Playgroud)

我喜欢这个,但现在,在开发这个系统一段时间后,我有一些函数(比如重新初始化一个jqgrid),我想在每次fadeIn发生时发生.我这样设置:

$('#module_2').bind('fadeIn',function(){
    initialize_jqgrid();
});
Run Code Online (Sandbox Code Playgroud)

有没有办法让我可以为所有实例工作,$('#module_2').fadeIn();而不必去每个实例并用它替换它?

$('#module_2').fadeIn().trigger('fadeIn');
Run Code Online (Sandbox Code Playgroud)

这背后的动机只是为了拥有更清晰的代码,$('#module_2').fadeIn().trigger('fadeIn');有点多余.

非常感谢!

use*_*654 11

当然,

var _old = $.fn.fadeIn;

$.fn.fadeIn = function(){
    var self = this;
    return _old.apply(this,arguments).promise().done(function(){
        self.trigger("fadeIn");
    });
};

// and your code: // replace .bind with .on if jQuery 1.7+
?$("div").bind("fadeIn",function(){alert("worky");});

$("div").fadeIn(2000);?????????????????
Run Code Online (Sandbox Code Playgroud)

演示
http://jsfiddle.net/gEVsX/2/

更新评论

var _old = $.fn.fadeIn;

$.fn.fadeIn = function(){
    return _old.apply(this,arguments).trigger("fadeIn");
};

// and your code: // replace .bind with .on if jQuery 1.7+
?$("div").bind("fadeIn",function(){alert("worky");});

$("div").fadeIn(2000);?????????????????
Run Code Online (Sandbox Code Playgroud)