关于$.Callbacks()传参问题

无参方式

var 
cb = $.Callbacks(), // 定义Callbacks对象
fn1 = function(){
    alert('fn1');
},
fn2 = function(){
    alert('fn2');
};
cb.add( a,b );
cb.fire();

无参方式很容易处理,只要执行 addfire 方法即可。

有参方式

var 
cb = $.Callbacks(), // 定义Callbacks对象
fn1 = function( param ){
    alert(param);
},
fn2 = function(param){
    alert(param);
};
cb.add( a,b );
cb.fire('fn1','fn2');

这个时候你会发现,弹出了两次fn1,并不是自己期待的结果,感觉这里jq存在bug,测试中使用的是jq-2.1.4的版本。研究源码是发现,这个地方确实存在传参的问题,于是动手改造了一下。
第一处改造:源码:图片描述
改后的代码:图片描述
注意3099行代码的区别。

第二处改造:源码:图片描述
改造后的代码:图片描述

注意3207代码的区别。

这两行代码改造好之后就可以正常传参了。在执行 fire 方法时,可以接受 fire('fn1','fn2',....) 或者 fire(['fn1','fn2',....]);
只是做了简单的测试,如果有其他jq功能模块有异常,欢迎大家指出来,谢谢大家

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值