0

我见过一些使用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()不能省略?

4

2 回答 2

1

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

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

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

jQuery 团队已经考虑到这一点,并实现了 noConflict() 方法。参考

在 JQuery 文档中。

许多 JavaScript 库使用 $ 作为函数或变量名,就像 jQuery 一样。在 jQuery 的例子中,$ 只是 jQuery 的别名,所以所有功能都可以在不使用 $ 的情况下使用。如果您需要与 jQuery 一起使用另一个 JavaScript 库,请通过调用 $.noConflict() 将 $ 的控制权返回给另一个库。$ 的旧引用在 jQuery 初始化期间被保存;noConflict() 只是恢复它们。参考

于 2013-03-28T06:05:48.577 回答
1

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

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

于 2013-03-28T06:13:27.467 回答