8

アイテムのリストを作成する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エラーはありません。誰もがそのような競合を解決する方法を知っていますか?

ありがとう

4

1 に答える 1

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がjQueryコアではない$(selector).delegate()上記の関数を作成したことです。主な問題は名前の競合であり、引数/動作は同じではありません。.delegate()

  • jQuery.validate:.delegate(type, delegate, handler)
  • jQueryコア:.delegate( selector, eventType, handler )

コンテキストなどの他の詳細を除けば、最初の問題は最初の引数であり、2番目の引数は逆方向です。

jQuery.validate 1.6を含めると、 .delegate()jsTreeが依存する関数が壊れます。検証プラグインのバージョン1.7以降にアップグレードするだけで、この問題は解消されるはずvalidateDelegateです。その後、その関数が呼び出されます。

于 2010-06-20T13:50:58.193 に答える