我有一个Jstree填充项目列表。当我单击一个节点时,部分加载了ajax。一切正常,直到我包含jquery.validate脚本来验证我的表单。
<script src="/scripts/jquery.validate.js" type="text/javascript"></script>
<script src="/scripts/MicrosoftMvcJQueryValidation.js" type="text/javascript"></script>
<script src="/areas/manager/scripts/jquery.jstree.min.js" type="text/javascript"></script>
<script src="/areas/manager/scripts/jquery.hotkeys.js" type="text/javascript"></script>
<script src="/areas/manager/scripts/admin-panel.js" type="text/javascript"></script>
只要包含此文件,就无法选择树节点。拖放功能也不起作用。 firebug中没有报告javascript错误。有谁知道如何解决这些冲突?
由于
答案 0 :(得分:10)
我猜你正在使用验证库的1.6版,请看一下这里的来源: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()
函数,不 jQuery核心.delegate()
,主要问题是命名冲突,参数/行为不是'同样的:
.delegate(type, delegate, handler)
.delegate( selector, eventType, handler )
除了上下文之外的其他细节,第一个问题是第一个和第二个参数是向后的。
包含jQuery.validate 1.6会破坏jsTree所依赖的.delegate()
函数。如果您只是升级到version 1.7+ of the validation plugin,则此问题应该消失,之后会调用其函数validateDelegate
。