如何避免 jQuery 和 Prototype 冲突?

15
如果一个页面同时使用 JQuery 和 Prototype,那么就会发生冲突。有一个选项可以禁用 $ 符号用于 JQuery,这样就没有冲突了,但是我必须使用关键字 JQuery 而不是 $。
我想知道是否有任何选项可以解决 Prototype 的这种冲突。有没有办法同时使用两个库而不牺牲它们的好处或简短的关键字?
据我所知,对于同一页面使用多个 JS 库不是一个好主意,但有时可能会有帮助。

确保在加载Prototype之前先加载jQuery。 - Alec Smart
我认为这可能是最常问的jQuery问题之一 :) - Russ Cam
1个回答

33

使用noConflict方法来为jQuery创建一个新的(短)变量。在任何原本需要使用$符号的地方,都可以使用这个新变量代替。

var $j = jQuery.noConflict();

$j(function() {
    $j('#selector').each( .... );
});

或者,如果你不需要混合使用Prototype/jQuery,你可以将所有的jQuery代码包装在一个匿名函数中。

(function($) {
    // $ sign here is a parameter, which is set to jQuery 

    $(function() {
        $('#selector').each( .... );
    });
})(jQuery);

你的代码示例中,jQuery需要以特定的顺序包含吗(首先、最后等)? - Crescent Fresh
如果您使用noConflict,则必须在调用它之前(显然)包含jQuery,以及定义$的其他库。有关更多信息,请参见此页面:http://docs.jquery.com/Using_jQuery_with_Other_Libraries - tvanfosson
我不知道一个变量可以被赋值,真是个好技巧 :) 嗯...我知道第二种技术,但不喜欢它 :( 它容易让我感到困惑。谢谢你的时间 :) - Sadi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接