有没有办法将命令绑定到fadeIn事件而不必.trigger(’fadeIn’)?
我有一个具有不同模块的交互式表单系统,其中每个模块的表单包含在不同的div元素中。 当我从一个模块更改为另一个模块时,我经常这样做:
$('#module_1').hide(); $('#module_2').fadeIn();
我喜欢这个,但是现在,在开发这个系统一段时间之后,我有一些函数(比如重新初始化jqgrid),我想在每次fadeIn
发生时发生。 我这样设置:
$('#module_2').bind('fadeIn',function(){ initialize_jqgrid(); });
有没有办法让我能为$('#module_2').fadeIn();
所有实例工作$('#module_2').fadeIn();
无需去每个实例并用它替换它?
$('#module_2').fadeIn().trigger('fadeIn');
这背后的动机就是拥有更清晰的代码, $('#module_2').fadeIn().trigger('fadeIn');
有点多余。
非常感谢!
当然,
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);
演示
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);
您可以定义回调函数并将其用作fadeIn()的参数。
function callback(){ initialize_jqgrid(); } $('div#module_2').fadeIn(duration,callback)
简单function:
switch_module('div#module_1','div#module_2'); function switch_module(old_selector, new_selector){ $(old_selector).hide(); initialize_jqgrid(); $(new_selector).fadeIn(); }
你可以使用回调函数$('div#module_2').fadeIn(500, initialize_jqgrid);
并将所有内容放入具有generics选择器调用的函数中;
function fadeModule(selector) { $(selector).fadeIn(500, initialize_jqgrid); }
并将其称为fadeModule('div#module_2');
编辑:500是fadeIn的默认持续时间,放置任何你想要的。