可以简化此事件处理程序并删除匿名函数吗?

时间:2013-07-16 09:27:16

标签: event-handling jquery

通过删除匿名函数可以简化图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']);

1 个答案:

答案 0 :(得分:0)

怎么样:

$('div').bind('EVT_MY_CUSTOM', doSomething)

然后在doSomething

var fruit = Array.prototype.slice.call(arguments, 1); // ['apple', 'banana']

演示:http://jsfiddle.net/PKwcC/

如果您已在其他地方定义doSomething,请创建一个从参数列表中删除事件对象的代理:

var proxy = function() {
    doSomething.apply(this, Array.prototype.slice.call(arguments, 1));
}

$('div').bind('EVT_MY_CUSTOM', proxy)

演示:http://jsfiddle.net/PKwcC/1/