2

我正在使用一个应用程序的插件,该应用程序的代码库由于更新问题而我不想更改。

该应用程序在标头中包含 Jquery 1.3.2,并在整个站点中大量使用它。没想到这一点,我继续使用 1.8.0 版本编写了我的插件,结果发现这弄乱了原始应用程序的功能。

我一直在尝试实现 noConflict 方法,但没有成功。

# Site loads jQuery1.32 and other jQuery plugins

# My awesome php & html code

<script type="text/javascript" src="http://code.jquery.com/jquery-1.8.0.js"></script>
<script type="text/javascript">
var $jq = jQuery.noConflict(true);  
$jq.DoSomeJQueryStuff();
</script>

在这种情况下如何实现 noConflict?

4

2 回答 2

1

您需要先调用noConflict()哪个(或两者都调用)。如果没有在第一个实例上调用它,那么在您包含下面的脚本定义时已经存在“冲突”。

<script type="text/javascript" src="http://code.jquery.com/jquery-1.8.0.min.js"></script>
<script type="text/javascript">
   var $jQ180 = jQuery.noConflict(true);
   document.write($jQ180().jquery); // 1.8.0
</script>​

...

<script type="text/javascript" src="http://code.jquery.com/jquery-1.3.2.js"></script>
<script type="text/javascript">
    document.write($().jquery); // 1.3.2
</script>
于 2012-08-17T07:32:53.000 回答
0

我认为你需要这样的东西。

如果我们假设链接按以下顺序添加:

  1. jquery-1.3.2.js
  2. jquery-1.8.0.js

我们有这个:

jQuery.noConflict();

// here you can execute javascript with jquery version 1.3.2
console.log($.fn.jquery);


jQuery(function($){
    // here you can execute javascript with jquery version 1.8.0
    console.log($.fn.jquery);
});

你可以在这个Jsfiddle上找到一个例子。

于 2012-08-17T08:43:37.613 回答