jQuery核心篇-移交$变量控制权

放弃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>

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值