Скрипт контекстного меню Dynamic Drive ломает jQuery - PullRequest
1 голос
/ 03 марта 2012

Я использую Сценарий контекстного меню jQuery Dynamic Drive , и я могу заставить работать контекстные меню, но как только я добавляю эти сценарии, он ломает все другие jQuery, которые ранее работали ...

Я предполагаю, что это может быть связано со сценарием, использующим jQuery и .noConflict() вместо $, но я не эксперт.

Причина, по которой я хочу придерживаться этого скрипта, заключается в том, как он обрабатывает коллизии и позиции меню. Это единственное, что я нашел до сих пор, которое помещает контекстное меню над курсором, если под курсором недостаточно места. Меню всех остальных скриптов просто отрезаются от документа.

Я бы опубликовал весь свой jQuery, который нарушает скрипт контекстного меню, но в этом нет ничего особенного, так что вот только базовая версия:

$(function(){
    $("#selector").hide();
});

Если кто-то может помочь исправить этот сценарий или порекомендовать новый, в котором нет проблем с позиционированием, он будет очень признателен.

1 Ответ

3 голосов
/ 03 марта 2012

Удалите эту строку из динамической части скрипта:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>

Вам нужно только один раз включить jQuery, чтобы он обрабатывал все скрипты, которым он требуется.

Изменить скриптВы загрузили с DD и удалите эту строку:

jQuery.noConflict()

Это должно быть в верхней части файла.Поскольку вы включаете JQuery только один раз, это не нужно.Тем не менее, я все еще не могу заставить это работать в jsFiddle, я получаю странную ошибку.http://jsfiddle.net/kybp9/

Редактировать: теперь это работает: http://jsfiddle.net/kybp9/1/

ОБНОВЛЕНИЕ
Заменить эту часть плагина

jQuery.fn.addcontextmenu = function(contextmenuid) {
    var $ = jQuery
    return this.each(function() { //return jQuery obj
        var $target = $(this)
        jquerycontextmenu.init($, $target, $('#' + contextmenuid))
    })
};

наэто, чтобы избежать $contextmenu.get(0) неопределенных ошибок:

jQuery.fn.addcontextmenu = function(contextmenuid) {
    var $ = jQuery,
        $contextmenu = $('#' + contextmenuid));
    if (!$contextmenu.length) {
        // no contextmenu found, exit
        return this;
    }
    return this.each(function() { //return jQuery obj
        var $target = $(this)
        jquerycontextmenu.init($, $target, $contextmenu)
    })
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...