通过删除匿名函数可以简化图1 中的事件处理程序吗?我找不到用$.proxy来解决这个问题的方法,但也许我错过了一些东西。自定义事件的触发器位于图2 。
需要使用 .bind ,因为正在使用较旧的jQuery版本,此时无法更新。
doSomething 的签名需要两个参数,两个字符串。
图1:Eventhandler
$(mySelector).bind('EVT_MY_CUSTOM', function (e, foo, bar) {
doSomething(foo, bar);
});
图2:触发器
$(mySelector).trigger('EVT_MY_CUSTOM', ['apple', 'banana']);
答案 0 :(得分:0)
怎么样:
$('div').bind('EVT_MY_CUSTOM', doSomething)
然后在doSomething
:
var fruit = Array.prototype.slice.call(arguments, 1); // ['apple', 'banana']
如果您已在其他地方定义doSomething
,请创建一个从参数列表中删除事件对象的代理:
var proxy = function() {
doSomething.apply(this, Array.prototype.slice.call(arguments, 1));
}
$('div').bind('EVT_MY_CUSTOM', proxy)