【问题标题】:JQuery noConflict running two versions [duplicate]运行两个版本的JQuery noConflict [重复]
【发布时间】:2014-05-17 13:41:01
【问题描述】:

我有以下代码,

<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js" type="text/javascript">
alert($().jquery); // Version 2.1.0
jQuery.noConflict();
alert($().jquery); // Previous version
</script>

我想使用第二个版本做一些事情,然后将$ 变量返回到第一个版本,所以现有的 jQuery 函数仍然可以工作。但是当我运行它时,$().jquery 返回版本 1.3.2,这是旧版本。有谁能帮忙吗?

谢谢

【问题讨论】:

  • 也许改变你的script标签的顺序?为什么要在同一个页面中使用多个版本的 jQuery?
  • @JLRishe 我不能这样做,因为 html 的其余部分是通过插件自动生成的。由于网站的其余部分使用 1.3.2 版本,但我添加的功能需要更新的版本。
  • 那么问题出在哪里?使用 noConflict() 存储对 2.1.0 版本的引用,然后对于其余代码,$ 将被视为 1.3.2 版本。

标签: javascript jquery html


【解决方案1】:

正如 jQuery API 所说,

如果由于某种原因加载了两个版本的 jQuery(jQuery API 不推荐这样做), 从第二个版本调用 $.noConflict( true ) 会将全局范围的 jQuery 变量返回到第一个版本的变量。

<script src="other_lib.js"></script>
<script src="jquery.js"></script>

<script>
$.noConflict();
// Code that uses other library's $ can follow here.
</script>

这种技术与 .ready() 方法对 jQuery 对象的别名能力结合起来特别有效,因为在传递给 .ready() 的回调中,如果您愿意,可以使用 $,而不必担心以后发生冲突:

<script src="other_lib.js"></script>
<script src="jquery.js"></script>

<script>
$.noConflict();
jQuery( document ).ready(function( $ ) {
// Code that uses jQuery's $ can follow here.
});
// Code that uses other library's $ can follow here.
</script>

在一个项目中,我将其用作

var j = jQuery.noConflict();
// Do something with jQuery
j( "div p" ).hide();

也这样

jQuery.noConflict();
  (function( $ ) {
    $(function() {
    // More code using $ as alias to jQuery
   });
})(jQuery);

我希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-19
    • 2014-08-11
    • 1970-01-01
    • 2017-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多