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,并尝试了一些具有相同结果的旧版本。
在某些情况下,是否有必要将事件作为第一个参数?
答案 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)