放弃jQuery对$变量的控制。(译者注:并返回Object类型)
jQuery.noConflict([removeAll])
removeAll
类型是布尔值
一个布尔值指示是否从全局范围移除所有的jQuery变量。(包括jQuery变量名自身)
许多javascript库使用$变量作为函数或者变量的名字,就像jQuery一样。在jQuery中,$仅仅只是一个jQuery的别名,因此,所有的函数都能不使用$正常运行。如果我们需要同时使用javascript类库和jQuery,我们可调用$.noConflict()来移交对$的控制权给其他类库。原来对$变量的使用在jQuery初始化的时候被保存;noConflict()方法是简单的重新恢复他们。
如果需要使用两个版本的jQuery(这是不推荐的),从第二个版本调用$.noConflict(true)方法会返回全局范围的jQuery变量给第一个版本:
<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>
当和.ready()(具有给jQuery对象使用别名的用法)一起使用的时候,这个技术非常有效,因为当回调函数被传递给.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($) {
// Code that uses jQuery's $ can follow here.
});
// Code that uses other library's $ can follow here.
</script>
如果需要,我们能够给方法传递一个true的参数来释放jQuery这个名字,这是很少需要的,如果我们必须这么做(比如,我们需要在同一个页面上使用不同版本的jQuery类库),我们需要认识到大多数插件程序都依赖于jQuery这个变量,在这样的情形下也许就不会正确的执行。
jQuery.noConflict();
//使用jQuery类库
jQuery("div p").hide();
//使用其他类库的$()
$("content").style.display = 'none';
jQuery.noConflict();
(function($) {
$(function() {
//在这里代码使用$作为jQuery的别名
});
})(jQuery);
// 在这里代码使用$作为其他类库的别名
var j = jQuery.noConflict();//创建j代替jQuery作为别名使用
//这里操作的是jQuery类库
j("div p").hide();
// 这里操作的是其他类库的$()
$("content").style.display = 'none';
var dom = {};
dom.query = jQuery.noConflict(true);//完全的将jQuery移到另一个对象新的命名空间
//使用jQuery类库,即使用上面修改后的变量名操作
dom.query("div p").hide();
// 使用其他类库的$()
$("content").style.display = 'none';
// 使用其他版本的jQuery类库
jQuery("div > p").hide();
<!DOCTYPE html>
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
<div id="log">
<h3>Before $.noConflict(true)</h3>
</div>
<script src="http://code.jquery.com/jquery-1.6.2.js"></script>
<script>
var $log = $( "#log" );
$log.append( "2nd loaded jQuery version ($): " + $.fn.jquery + "<br>" );
/*
恢复全局作用域jQuery变量给第一个加载的版本。(jquery-latest)
*/
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>