0

图 1中的事件处理程序可以通过删除匿名函数来简化吗?我找不到用$.proxy解决这个问题的方法,但也许我错过了一些东西。自定义事件的触发器在图 2中。

需要使用.bind,因为使用的是较旧的 jQuery 版本,目前无法更新。

doSomething的签名需要两个参数,都是字符串。

图 1:事件处理程序

$(mySelector).bind('EVT_MY_CUSTOM', function (e, foo, bar) {
    doSomething(foo, bar);
});

图 2:触发器

$(mySelector).trigger('EVT_MY_CUSTOM', ['apple', 'banana']);
4

1 回答 1

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/

于 2013-07-16T09:33:58.397 回答