jQuery.noConflict()

jQuery.noConflict( [ removeAll ] ) 返回: Object

描述: 放弃jQuery控制的$的变量。

  • version added: 1.0jQuery.noConflict( [ removeAll ] )

    removeAll判断是否从全局范围内去除所有jQuery变量的布尔值(包括jQuery本身)。

很多javascript库使用 $ 作为一个函数或者变量名,正如jquery做的一样。在jQuery下 $只是jQuery的一个别名,所以不使用 $所有功能都是有效的。如果我们需要同时使用jQuery和其他javascript库,我们可以使用 $.noConflict()来控制其他库使用 $ :

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

这个技巧,在jQuery对象结合.ready()方法的地方依然有效,我们没有必要为通过对.ready()内部调用$而担心冲突(原因:.ready()是一个闭包):

<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($) {
    // 在这里可以使用jQuery的$。
  });
  // 在这里使用其他库的$。
</script>

如果必要的话,我们可以空出jQuery名字,传递true作为一个参数给这个方法。 这不是必须的,如果我们必须这样做的话(举个例子,如果我们在同一个页面上使用多个版本的jQuery库), 我们必须考虑到大多数插件依靠jQuery存在的变量,这种情况,可能不能正常操作。

举例

例子: 将$引用的对象映射回原始的对象。

jQuery.noConflict();
// Do something with jQuery
jQuery("div p").hide();
// Do something with another library's $()
$("content").style.display = 'none';

例子: 恢复使用别名$,然后创建并执行一个函数,在这个函数的作用域中仍然将$作为jQuery的别名来使用。在这个函数中,原来的$对象是无效的。这个函数对于大多数不依赖于其他库的插件都十分有效。

jQuery.noConflict();
(function($) { 
  $(function() {
    // 使用 $ 作为 jQuery 别名的代码
  });
})(jQuery);
// 其他用 $ 作为别名的库的代码

例子: 你可以通过jQuery.noConflict() ready约束为一小段代码

jQuery.noConflict()(function(){
    // 使用jQuery代码
}); 
// 其他用 $ 作为别名的库的代码

Example: 创建一个新的别名用以在接下来的库中使用jQuery对象。

var j = jQuery.noConflict();
// Do something with jQuery
j("div p").hide();
// Do something with another library's $()
$("content").style.display = 'none';

例子: 完全将 jQuery 移到一个新的命名空间。

var dom = {};
dom.query = jQuery.noConflict(true);

Result:

// Do something with the new jQuery
dom.query("div p").hide();
// Do something with another library's $()
$("content").style.display = 'none';
// Do something with another version of jQuery
jQuery("div > p").hide();
jQuery 1.6 API 中文版脚本之家整理、修订 (2011年6月)