0
jQuery.noConflict(); or $.noConflict();    
(function($) { 
    $(document).ready( function() {
     // Show menu when #input1 is clicked
        $("#input1").contextMenu({
        menu: 'myMenu'
        },
         function(action, el, pos) {
        alert("clicked");
        });
    })(jQuery); 

在上面的代码中,我通过使用 function($){}(jQuery); 避免了与原型的冲突;但是在回调函数(action,e1,pos)中,它再次从原型调用函数。

两者 $.noConflict(); & jquery.noConflict(); 我试过但没有用。请提供建议显示我可以避免这种冲突。

现在冲突解决了。感谢大家的专家建议。但现在另一个问题是右键单击 input1 时未打开上下文菜单。请提出您宝贵的建议。

感谢您。

4

3 回答 3

0

问题出在jquery.contextMenu.js中。我已经提到了这些行:

// This plugin is dual-licensed under the GNU General Public License
//   and the MIT License and is copyright A Beautiful Site, LLC.
//
if(jQuery)( function() {
    $.extend($.fn, 
...
})(jQuery);

所以我们不能说'$'是jQuery还是其他lib。这是插件的一个错误

变更function()function($)冲突应该得到解决。

于 2012-04-17T13:47:35.400 回答
0

假设您应该使用jQuery.noConflict()以避免使用$符号的库之间的干扰,最后您还有一个额外;

(function($) { 
    ...
}(jQuery)); 
于 2012-04-17T13:21:44.517 回答
0

您的代码中有错误:});(jQuery);

您应该调用匿名函数,而不仅仅是定义它,并使用 jQuery 作为调用它的参数,因此在匿名函数内部$jQuery,因为您现在有不同的范围。

如果你(function($){/*your stuff*/});(jquery)定义了一个匿名函数,但不要执行它。函数内部的任何内容都不会执行,并且由于匿名函数没有名称,因此您无法执行它。

删除该行中的第一个分号:

(function($) { 
    // do your stuff
})(jQuery);

编辑:

关于它的工作原理的一点解释:

它是一个匿名函数(如果您不知道 Javascript 中的匿名函数是如何工作的,请参阅这个问题),并且您使用jQuery. 如果您jQuery.noConflict()在代码中使用,因为您应该这样做以避免绑定$到 jquery,那么您将只能使用jQuery('#myId')jquery 函数之类的调用,而不是$('#myId')仍然$绑定到 Prototype 库的调用(我明确称它为 destinguish它来自prototype对象链)。

现在考虑您的匿名函数:

你有(function($){ /* Some stuff with $ as a variable */ }). 在函数内部,你有一个新的范围,因此$只是你传递给函数的变量,而不是$它的外部(仍然绑定到 Prototype 库)。

现在你将一些东西传递给匿名函数并因此执行它:(function($){ /* Some stuff with $ as a variable */ })(jQuery). 现在$里面的函数是…… jQuery,和$外面的不一样。

编辑2:

当您更新您的问题时,我将解释使这两个库工作的步骤。您需要在 jQuery 之前包含对 Prototype 的引用,然后调用jQuery.noConflict(). 调用之后,$()默认使用 Prototype 库中的函数。要调用 jQuery 库中的函数,您必须使用jQuery()(请参阅jQuery API 参考)。您将jQuery对象的引用传递给匿名函数,因此匿名函数内部$引用了 jQuery 对象,您无法使用 Prototype 库的功能。

现在关于回调函数的问题:问题可能出在contextMenu函数内部,因为该函数可能无法正确使用无冲突初始化,但这只是一个疯狂的猜测。你能给出你的contextMenu功能实现吗?

于 2012-04-17T13:24:44.937 回答