JsTree конфликтует с jquery.validate - PullRequest
8 голосов
/ 20 июня 2010

У меня есть 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 Ответ

10 голосов
/ 20 июня 2010

Я предполагаю, что вы используете версию 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 core .delegate(), основная проблема - конфликт имен, а аргументы / поведение - нетто же самое:

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

За исключением других деталей, таких как контекст, первая проблемапервый и второй аргументы задом наперед.

Включение jQuery.validate 1.6 нарушает функцию .delegate(), на которую опирается jsTree.Если вы просто обновите до версии 1.7+ подключаемого модуля проверки , эта проблема должна исчезнуть, после этого она вызывает функцию validateDelegate.

...