动态驱动器上下文菜单脚本打破了jQuery

时间:2012-03-02 21:12:39

标签: jquery contextmenu

我正在使用Dynamic Drive's jQuery Context Menu script,我可以让上下文菜单工作,但是一旦我添加了这些脚本,它就会破坏以前工作的所有其他jQuery ......

我假设它可能与使用jQuery.noConflict()代替$的脚本有关,但我不是专家。

我想坚持使用这个脚本的原因是它处理碰撞和菜单位置的原因。到目前为止,这是我发现的唯一一个如果光标下面没有足够空间的话,将上下文菜单定位在光标上方。每个其他脚本的菜单都会从文档中删除。

我会发布我的所有jQuery都打破了上下文菜单脚本,但没有什么花哨的,所以这里只是一个基本版本:

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

如果有人可以帮助修复此脚本,或推荐一个没有定位问题的新脚本,我们将不胜感激。

1 个答案:

答案 0 :(得分:3)

从脚本的动态驱动器部分删除此行:

<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)
    })
};