jQuery的委托参数顺序

时间:2011-12-23 22:09:20

标签: jquery

jQuery的委托方法的签名记录如下:

.delegate( selector, eventType, handler )

是否有任何情况会使参数顺序如下,交换eventType和selector?

.delegate( eventType, selector, handler )

我有一个项目,不管我做什么,我必须先把eventType。例如,这是我当前项目中唯一有效的东西(这只是一个测试,而不是真正的代码!):

$('body').delegate('click', 'input', function (e) {
            alert("Why is this the only way it will work for me in this project?");
        });

根据文档,这应该有效:

$('body').delegate('input', 'click', function (e) {
            alert("This will never get hit");
        });

我测试了小项目,它的工作方式就像文档说的那样(这里是一个例子js fiddle:http://jsfiddle.net/wmdYr/16/

我正在使用Google CDN中的jQuery 1.7.1,并尝试了一些具有相同结果的旧版本。

在某些情况下,是否有必要将事件作为第一个参数?

2 个答案:

答案 0 :(得分:1)

我解决了这个问题,现在可以使用jQuery委托方法的记录参数顺序:.delegate( selector, eventType, handler(eventObject))

我们的解决方案是将jQuery Validate库升级到最新版本(1.9)。我正在研究的项目使用了Asp.Net MVC附带的旧版jQuery验证库(1.5.5)。该版本似乎与jQuery的委托方法存在冲突。

这种冲突会影响jQuery的委托方法和Backbone.js视图事件,因为Backbone.js使用了jQuery的委托方法。

答案 1 :(得分:0)

是的,如果您从delegate()升级到on()

Here是你的代码。第二个示例现在使用on()