jQuery.noConflict( [removeAll ] )Returns: Object
说明:释放对$变量及jQuery变量的控制权
-
增加版本:1.0 jQuery.noConflict( [removeAll ] )
-
参数名称:removeAll
- 参数类型::Boolean
- 参数说明:是否彻底移除jQuery对象(包括JQuery本身)
许多其他的JavaScript库使用$作为函数或变量名,与jQuery类似。在jQuery中,$仅作为jQuery的别名,因此所有功能都可以在没有其他$的情况下使用。如果需要在jQuery的同时使用另一个javascript库,可通过调用$.noConflict()将$的控制权返回释放。$的原始引用在jQuery初始化期间依然有效;noConflict()只需重置它们。
如果特殊需要加载了两个版本的jQuery(不推荐),在第二个版本调用$.noconflict(true)将全局范围的jQuery变量返回到第一个版本的变量。
<script src="other_lib.js"></script>
<script src="jquery.js"></script>
<script>
$.noConflict();
// 可以使用其他JS资源的$变量
</script>
在.ready()方法中对jQuery定义别名,可以避免$调用带来的冲突:
<script src="other_lib.js"></script>
<script src="jquery.js"></script>
<script>
$.noConflict();
jQuery( document ).ready(function( $ ) {
// 此处可以使用JQuery的$变量
});
// 此处可以使用其他JS的$变量
</script>
如果需要,还可以通过将true作为参数传递给方法来释放jQuery名称变量。很少需要这样做,如果必须这样做(例如,如果需要在同一页上使用多个版本的jQuery库),则需要考虑大多数插件依赖于jQuery变量的存在,并且在这种情况下可能无法正确操作。
示例:
将$引用的原始对象映射到$:
jQuery.noConflict();
// 使用jQuery
jQuery( "div p" ).hide();
// 其他JS资源的$()方法实现
$( "content" ).style.display = "none";
恢复$ 别名,然后创建并执行一个函数,在函数范围内提供$作为jQuery别名。 在函数内部,原始$对象不可用。 这适用于大多数不依赖于任何其他库的插件。
jQuery.noConflict();
(function( $ ) {
$(function() {
// 使用JQuery的别名$使用jQuery
});
})(jQuery);
// 其他JS资源使用$使用第三方JS资源(不冲突)
创建一个区别于jQuery的其他别名,以便在JS的其他部分使用
var j = jQuery.noConflict();
// 使用别名j来调用jQuery
j( "div p" ).hide();
// 使用其他JS资源的$()方法
$( "content" ).style.display = "none";
完全将jQuery移动到另一个对象中的新命名空间
var dom = {};
dom.query = jQuery.noConflict( true );
结果:
// 使用新的jQuery
dom.query( "div p" ).hide();
// 使用另一个JS资源的$()方法
$( "content" ).style.display = "none";
//使用另一个版本的jQuery
jQuery( "div > p" ).hide();
加载两个版本的jQuery(不推荐)。 然后,将jQuery的全局范围变量恢复到第一个加载的jQuery
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>jQuery.noConflict demo</title>
<script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
<div id="log">
<h3>Before $.noConflict(true)</h3>
</div>
<script src="https://code.jquery.com/jquery-1.6.2.js"></script>
<script>
var $log = $( "#log" );
$log.append( "2nd loaded jQuery version ($): " + $.fn.jquery + "<br>" );
// Restore globally scoped jQuery variables to the first version loaded
// (the newer version)
jq162 = jQuery.noConflict( true );
$log.append( "<h3>After $.noConflict(true)</h3>" );
$log.append( "1st loaded jQuery version ($): " + $.fn.jquery + "<br>" );
$log.append( "2nd loaded jQuery version (jq162): " + jq162.fn.jquery + "<br>" );
</script>
</body>
</html>
结果:
Before $.noConflict(true)
2nd loaded jQuery version ($): 1.6.2
After $.noConflict(true)
1st loaded jQuery version ($): 1.10.2
2nd loaded jQuery version (jq162): 1.6.2