我猜您正在使用 1.6 版的验证库,请查看此处的源代码:http://ajax.microsoft.com/ajax/jQuery.Validate/1.6/jQuery.Validate.js http://ajax.microsoft.com/ajax/jQuery.Validate/1.6/jQuery.Validate.js
一直到底部:
$.extend($.fn, {
delegate: function(type, delegate, handler) {
return this.bind(type, function(event) {
var target = $(event.target);
if (target.is(delegate)) {
return handler.apply(target, arguments);
}
});
},
triggerEvent: function(type, target) {
return this.triggerHandler(type, [$.event.fix({ type: type, target: target })]);
}
})
问题是 1.6 创建了$(selector).delegate()
上面的函数,就是notjQuery 核心.delegate() http://api.jquery.com/delegate/,主要问题是命名冲突并且参数/行为不相同:
- jQuery.验证:
.delegate(type, delegate, handler)
- jQuery 核心:
.delegate( selector, eventType, handler )
除非上下文等其他细节,第一个问题是第一个和第二个参数是向后的。
包括 jQuery.validate 1.6 打破了.delegate() http://api.jquery.com/delegate/jsTree 依赖的函数。如果您刚刚升级到验证插件版本 1.7+ http://bassistance.de/jquery-plugins/jquery-plugin-validation/,这个问题应该消失,它调用它的函数validateDelegate http://ajax.microsoft.com/ajax/jquery.validate/1.7/jquery.validate.js在那之后。