Jquery / Javascript冲突?

时间:2010-09-06 00:54:57

标签: javascript jquery conflict

我刚刚在我的网站上实现了多语言模式。

问题是来自语言mod的javascript文件与页面上已存在的javascript文件之间似乎存在冲突。

<!-- language files here -->
<script type="text/javascript" src="js/jquery-1.4.2.min.js"></script>
<script type="text/javascript" src="js/translationEngine.js"></script>
<script type="text/javascript" src="js/jquery.cookie.js"></script> 
<script type="text/javascript" src="js/jquery.translate-1.3.9.min.js"></script>
<script>var browserlang = 'en';</script> 


<!-- Javascript -->

<script type="text/javascript" src="js/jquery-1.3.2.min.js"></script>
<script type="text/javascript" src="js/jquery.pngFix.pack.js"></script>
<script type="text/javascript" src="js/jquery.flow.1.2.min.js"></script>
<script type="text/javascript" src="js/jquery.prettyPhoto.js"></script>
<script type="text/javascript" src="js/concept.js"></script>

js / jquery-1.3.2.min.js是使主页上的3图像滑块工作的原因,但是......它似乎也在干扰翻译器的功能。

如果您从页面中删除js / jquery-1.3.2.min.js,则翻译工作正常,但滑块不再有效。

从页面中删除js / jquery-1.4.2.min.js也不会使翻译工作,实际上它似乎会导致后面出现更多错误。

有人可以指导我正确的方向,使我能够使语言翻译器和图像滑块都工作吗?

http://filefx.com

谢谢:)

5 个答案:

答案 0 :(得分:4)

查看jQuery noConflict函数。该函数告诉jQuery放弃它对$变量的控制。这样,其他库就可以使用它。

在线文档为如何使用此功能提供了很好的指导。它救了我几次。

来自在线文档的示例:

<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>

基本上,一旦你致电noConflict,你仍然可以使用jQuery,只需使用jQuery变量名而不是$来使用它。

希望这有帮助!

答案 1 :(得分:4)

简短版本是删除它:

<script type="text/javascript" src="js/jquery-1.3.2.min.js"></script>

更新你的插件,每个版本都有1.4.x版本。通过第二次包含jQuery,就像你现在一样,它会消除插件并引发各种问题......第一步是删除第二个(希望是较旧的)实例。

编辑:这是一个名为jFlow plus的jFlow的更新版本,适用于1.4.2。

答案 2 :(得分:1)

我总是解决两个版本的jquery之间的冲突,例如:使用iframe在同一页面上使用jQuery 1.3.2和jQuery 1.4.2,但我最近发现你可以单独使用版本jquery-1.5.1.js并且一切正常。

答案 3 :(得分:1)

我更改了以下代码中使用的页面上的所有.js文件:

<script>
var K = jQuery.noConflict();
     alert(K);
     jQuery(document).ready(function () {

         alert("Bye");
     });
</script>

现在工作正常。

答案 4 :(得分:0)

我最后只是改变了加载库的顺序。

我让所有jquery库首先加载,从最新到最旧。然后我调用了依赖jquery的javascript文件。

现在工作正常。