所谓静态方法是jQuery本身得官措施,并不需要通过实例化来调用,一般也叫工具方法,下边先来列绝下jQuery.noConflict方法的用法:

noConflict() 方法让渡变量 $ 的 jQuery
控制权。

欠办法释放 jQuery 对 $
变量的主宰。

拖欠情势也可用于为 jQuery
变量规定新的自定义名称。

var jq=$.noConflict();

脚来做只测试:

    <script src='jquery-1.7.1.js'></script>
    <script>
         alert( $ );  //function(){...}
    </script>

jQuery,调用noConflict方法后的结果:

<script src='jquery-1.7.1.js'></script>
    <script>
        $.noConflict();
         alert( $ );  //undefinded
    </script>

斯时$就不再是jQuery的别名了,上边加上参数

<script src='jquery-1.7.1.js'></script>
    <script>
        $.noConflict(true);
         alert( jQuery );  //undefined
    </script>

然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();
  // 使用另一个库的 $ 的代码
</script>

 

足跟 .ready()方法结合起来使用,不需要吗 jQuery 对象由别名,这项技能特别实用:

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

 

此外,通过奔该情势传递参数
true,大家可以用 $ 和 jQuery
的控制权都交还给原来的堆栈。用前要考虑清楚!

即时是对峙于简单的 noConflict
方法更极端的版本,因为就将全重复定义
jQuery。这便用于同一栽最的情,比如您想只要以 jQuery
嵌入一个莫大争执的条件。注意:调用此模式后最好生或致插件失效。

//将 $ 引用的对象映射回原始的对象:

jQuery.noConflict();

jQuery("div p").hide();    // 使用 jQuery

$("content").style.display = "none";    // 使用其他库的 $()

 

平复使用别名
$,然后成立并推行一个函数,在斯函数的效用域中依旧以 $ 作为 jQuery
的号来利用。在这些函数中,原来的 $
对象是低效的。这么些函数对于绝大多数未指让其他库的插件都很行:

jQuery.noConflict();

(function($) { 
  $(function() {
    // 使用 $ 作为 jQuery 别名的代码
  });
})(jQuery);

... // 其他用 $ 作为别名的库的代码

 

得将 jQuery.noConflict() 与简写的 ready
结合,使代码更不方便凑:

jQuery.noConflict()(function(){
    // 使用 jQuery 的代码
});

... // 其他库使用 $ 做别名的代码

创制一个新的别名用以在连接下的库中使用
jQuery 对象:

var j = jQuery.noConflict();

j("div p").hide();    // 基于 jQuery 的代码

$("content").style.display = "none";    // 基于其他库的 $() 代码

毕用 jQuery
移到一个初的命名空间:

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

dom.query("div p").hide();    // 新 jQuery 的代码

$("content").style.display = "none";    // 另一个库 $() 的代码

jQuery("div > p").hide();    // 另一个版本 jQuery 的代码

下起先分析jquey源码:

// Map over jQuery in case of overwrite
    _jQuery = window.jQuery,

    // Map over the $ in case of overwrite
    _$ = window.$,

即段是描摹在jQuery构造函数里面的,首要用途是保留或者是的jQuery和$的变量,很有或要其他库,这样可以避免顶牛

noConflict: function( deep ) {
        if ( window.$ === jQuery ) {
            window.$ = _$;
        }

        if ( deep && window.jQuery === jQuery ) {
            window.jQuery = _jQuery;
        }

        return jQuery;
    },

deep参数是一个布尔值假诺为true则放jQuery为undefined在后面的例子中已演示了

 window.$ === jQuery

以此极是确保只有当jQuery还享有$的控制权的早晚才去自由,本来就是从未有过自由吧尚无意思,把刚刚之_$再一次成全局变量,而者$可能是另外库这样就是落实了放的过程

deep && window.jQuery === jQuery

deep为true并且jQuery变量还属于jQuery,跟$一样,如若既于放飞了就一向不必要再自由了

return jQuery;

实践后的结果是jQuery,这样就是得拿jQuery起一个别用来用了

相关文章

网站地图xml地图