我正在使用Dynamic Drive's jQuery Context Menu script,我可以让上下文菜单工作,但是一旦我添加了这些脚本,它就会破坏以前工作的所有其他jQuery ......
我假设它可能与使用jQuery
和.noConflict()
代替$
的脚本有关,但我不是专家。
我想坚持使用这个脚本的原因是它处理碰撞和菜单位置的原因。到目前为止,这是我发现的唯一一个如果光标下面没有足够空间的话,将上下文菜单定位在光标上方。每个其他脚本的菜单都会从文档中删除。
我会发布我的所有jQuery都打破了上下文菜单脚本,但没有什么花哨的,所以这里只是一个基本版本:
$(function(){
$("#selector").hide();
});
如果有人可以帮助修复此脚本,或推荐一个没有定位问题的新脚本,我们将不胜感激。
答案 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)
})
};