2009-06-09 125 views
1

我正在使用prototype和script.aculo.us的组合来实现我的asp.net页面中的lightbox效果。我的页面中也包含了jquery。我的页面中有几个DIV标签,但是,包括在我的页面头部原型文件后,我不能够使用jQueryjQuery -prototype冲突

var div = $("#divLeftSideModelsList"); 
alert(div) 

给我一个错误说,对象为空 但

var div = document.getElementById("divLeftSideModelsList") 
阅读我的javascript的div

给我的对象。

这是因为jQuery和其他框架之间存在一些冲突吗?

请指点

+0

你已经解决了这个问题?您需要进一步的帮助吗?或者您可以将问题标记为已回答? – 2009-06-23 10:44:36

回答

6

对此有读:http://docs.jquery.com/Using_jQuery_with_Other_Libraries

显示很好的例子:)

重写$ -FUNCtion

但是,您可以通过在jQuery和其他库都加载后的任意时刻调用jQuery.noConflict()来覆盖该默认值。例如:

<html> 
<head> 
    <script src="prototype.js"></script> 
    <script src="jquery.js"></script> 
    <script> 
    jQuery.noConflict(); 

    // Use jQuery via jQuery(...) 
    jQuery(document).ready(function(){ 
     jQuery("div").hide(); 
    }); 

    // Use Prototype with $(...), etc. 
    $('someid').hide(); 
    </script> 
</head> 
<body></body> 
</html> 

这会将$恢复到其原始库。您仍然可以在应用程序的其余部分使用“jQuery”。

此外,还有另一种选择。如果你想确保的jQuery不会与其他库发生冲突 - 但你要一个简短的名字的好处,你可以做这样的事情:

<html> 
<head> 
    <script src="prototype.js"></script> 
    <script src="jquery.js"></script> 
    <script> 
    var $j = jQuery.noConflict(); 

    // Use jQuery via $j(...) 
    $j(document).ready(function(){ 
     $j("div").hide(); 
    }); 

    // Use Prototype with $(...), etc. 
    $('someid').hide(); 
    </script> 
</head> 
<body></body> 
</html> 
-2

此代码是否工作:

​​
2

你应该noConflict mode使用jQuery。然后使用jQuery()而不是$()

0

奇怪的错误。无论如何,原型和jQuery都重新定义了全局变量$。

请阅读this了解jQuery如何与其他库发挥良好效果。

它基本上是说,调用jQuery.noConflict()离开$变量单独为其他库使用