使jQuery没有冲突

时间:2011-08-24 20:38:50

标签: javascript jquery

我正在创建一个要在其他网站上发布的Web小部件。在小部件中,它将调用jQuery,我不希望jQuery与网站可能已安装的其他JavaScript库冲突。当我加载jQuery时,我想像这样调用jQuery:

JQuery_MYSite('id').find('selector');

我发现如果我这样做,那么即使其他网站使用$

,也无法使用$.

当窗口小部件加载时,查明是否加载了jQuery。如果是这样,那么它将使用$来调用jQuery。但我知道$并不是jQuery独有的 - 其他javascript库使用它。那么如何在不干扰网站所有者前缀的情况下使用自己的jQuery前缀。

5 个答案:

答案 0 :(得分:2)

  

在小部件中,它将调用jQuery,我不想要jQuery   与网站可能拥有的其他JavaScript库冲突   安装。

我认为你无法做到这一点,因为在加载其他脚本之后必须调用jQuery.noConflict()。因此,如果您无法了解其他脚本,那么您将无法避免冲突。

  

当窗口小部件加载时,查明是否加载了jQuery。如果是这样,那么它   将使用$来调用jQuery。但我知道$并不是唯一的   jQuery - 其他javascript库使用它。那我该如何使用自己的呢?   jQuery前缀,不会干扰网站所有者前缀。

使用自动执行的匿名函数包装您的窗口小部件代码:

(function($){

// your widget code here
// $ will always be jQuery

})(jQuery);

答案 1 :(得分:2)

var myJquery = jQuery.noConflict();

然后,如果你想得到幻想:

(function($){
    $(".whatever").doSomeStuff();
})(myJquery);

答案 2 :(得分:1)

使用noConflict

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

答案 3 :(得分:0)

查看noConflict

$.noConflict();
(function($){
   // $ is jQuery here
})(jQuery);

答案 4 :(得分:0)