jQuery.noConflict()
jQuery.noConflict( [ removeAll ] ) 官网原E文: 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();