我什么时候需要jQuery中的关键字noConflict?

时间:2013-03-28 06:04:44

标签: jquery

我见过一些使用jQuery.noConflict的方法。但似乎并不总是必要的。

// define $
var $ = function() {
    alert("Hello World");
};

// use $ where it's not jQuery
$();

// 1
// jQuery.noConflict();
jQuery(document).ready(function($) {
    $('body').append("<p>foo</p>");
});

// 2
// jQuery.noConflict();
(function($) {
    $(function() {
        $('body').append("<p>foo</p>");
    });
})(jQuery);

// 3
// $.noConflict() here to tell jQuery to ignore $, but we're using *jQuery* when ready
jQuery(document).ready(function() {
    jQuery('body').append("<p>foo</p>");
});

// use $ where it's not jQuery
$();

jQuery.noConflict的唯一需要是我们定义jQuery的别名

var j = jQuery.noConflict();
j(document).ready(function() {
    j('body').append("<p>foo</p>");
});

那么在什么情况下(除了创建别名之外)jQuery.noConflict()不能被省略?

2 个答案:

答案 0 :(得分:1)

当你有单一版本的jQuery并且没有使用可能相互冲突的框架时你可以省略jQuery.noConflict()

  

其他一些流行的JavaScript框架是:MooTools,Backbone,   Sammy,Cappuccino,Knockout,JavaScript MVC,Google Web Toolkit,   Google Closure,Ember,Batman和Ext JS。

     

其他一些框架也使用$字符作为快捷方式   (就像jQuery一样),然后你突然有两个不同   框架使用相同的快捷方式,这可能会导致您的   脚本停止工作。

     

jQuery团队已经考虑过这个,并实现了   noConflict()方法。 Reference

在JQuery文档中。

  

许多JavaScript库只使用$作为函数或变量名   就像jQuery一样。在jQuery的情况下,$只是jQuery的别名,所以   无需使用$即可使用所有功能。如果你需要使用   与jQuery一起使用的另一个JavaScript库,返回$ back的控件   通过调用$ .noConflict()到另一个库。旧的参考文献   在jQuery初始化期间保存$; noConflict()只是简单地恢复   他们。 Reference

答案 1 :(得分:1)

许多JavaScript库使用$作为函数或变量名,就像jQuery一样。在jQuery的情况下,$只是jQuery的别名,因此所有功能都可以在不使用$的情况下使用。

如果您需要在jQuery旁边使用另一个JavaScript库,请通过调用$ .noConflict()将$的控制权返回给另一个库。在jQuery初始化期间保存$的旧引用; noConflict()只是简单地恢复它们。