jquery和原型冲突

时间:2012-02-15 16:12:56

标签: jquery prototypejs lightbox

我知道这个问题已被多次询问了,我已经搜索了stackoverflow和google的答案但是没有一个能为我工作,所以也许我的错误是在不同的领域引起的,反正这里是我的javascript包括

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

echo "<script type=\"text/javascript\" src=\"javascript/watermark.min.js\"></script>\n";
echo "<script type=\"text/javascript\" src=\"javascript/jquery.cycle.js\"></script>\n";
echo "<script type=\"text/javascript\" src=\"http://vjs.zencdn.net/c/video.js\"></script>\n";

echo "<script type=\"text/javascript\" src=\"javascript/prototype.js\"></script>\n";
echo "<script type=\"text/javascript\" src=\"javascript/scriptaculous.js?load=effects,builder.js\"></script>\n";
echo "<script type=\"text/javascript\" src=\"javascript/lightbox.js\"></script>\n";

echo "<script type=\"text/javascript\" src=\"javascript/jquery.userdrive.js\"></script>\n";

每当我在jQuery库之后放入prototype.js,scriptaculous.js和lightbox.js时,我的用户驱动程序都不起作用,而且当我把它放在之前时,它可以工作但不完全。我知道$符号之间存在冲突,但我不知道如何解决这个问题。此外,我的userdrive包括ajax调用和可排序网格的代码。

2 个答案:

答案 0 :(得分:2)

使用noConflict功能:

<script type="text/javascript" src="other_lib.js"></script>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
  $.noConflict();
  jQuery(document).ready(function($) {
    // Code that uses jQuery's $ can follow here.
  });
  // Code that uses other library's $ can follow here.
</script>

确保在此代码之前包含jQuery库,这是一个文档:

http://api.jquery.com/jQuery.noConflict/

答案 1 :(得分:1)

如果你的userdrive.js使用没有闭包的全局变量“$”,它将失败,因为prototype.js删除了“$”和“jQuery”之间的链接

这是一个clousure:

(function($){
  ...
})(jQuery)

尝试将您的userdrive放入闭包中,并使用noConflict方法来防止其他错误。

<script type="text/javascript">
  jQuery.noConflict();
</script>