【问题标题】:JsTree conflicts with jquery.validateJsTree 与 jquery.validate 冲突
【发布时间】:2010-06-20 13:41:12
【问题描述】:

我有一个 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 错误。有谁知道如何解决此类冲突?

谢谢

【问题讨论】:

  • 验证插件的哪个版本? 1.6 fubar'd 委托函数。

标签: jquery jquery-validate jstree


【解决方案1】:

我猜你正在使用 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(),主要问题是命名冲突和参数/行为不一样:

  • jQuery.validate: .delegate(type, delegate, handler)
  • jQuery 核心:.delegate( selector, eventType, handler )

除非上下文等其他细节,第一个问题是第一个和第二个参数是向后的。

包含 jQuery.validate 1.6 会破坏 jsTree 所依赖的 .delegate() 函数。如果你只是升级到version 1.7+ of the validation plugin,这个问题应该会消失,之后它会调用它的函数validateDelegate

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-29
    • 1970-01-01
    • 2017-12-09
    • 2013-10-21
    • 2020-08-19
    相关资源
    最近更新 更多