在自定义库中包含JQuery。如何解决冲突问题。

时间:2013-06-18 07:21:31

标签: javascript jquery-plugins jquery

我正在开发一个新的JS库。我想将JQuery作为其核心部分。

我的库应该适用于所有类型的网站,所以在这些网站中,JQuery可能已经包含在不同版本中,可能还有一些其他库可能与我库中的JQuery冲突。

jQuery.noConflict();  

可能不是一个完整的解决方案,因为它将从全局范围中删除变量。我的图书馆不希望用户更改任何其他设置。

那我怎么能避免这些问题

  • 与其他库冲突? $ alias - 可能是jQuery.noConflict(); )。
  • 与其他版本的JQuery冲突,如果它已经包含在网页中。

提前致谢。请不要告诉不要包含JQuery,使用普通的JS:)

2 个答案:

答案 0 :(得分:3)

这很简单。

首先加载你喜欢的jQuery,并通过使用,

省略现有jQuery中的任何冲突来获取它的句柄。
    $yourJQ = window.jQuery.noConflict(true);

在要使用jQuery的所有函数中,在匿名作用域中使用$ yourJQ。像这样,

   (function($){
     // external library code   

    })($yourJQ);

希望这有帮助

另请访问http://alexmarandon.com/articles/web_widget_jquery/

答案 1 :(得分:0)

无论您是否从全局范围中移除变量,您都必须执行查找和操作。替换以更改哪个库指向哪个版本的jQuery;因为他们会使用$或jQuery&无论如何,在全球范围内发生冲突。你可以尝试这样的事情:

加载第一个版本的jQuery

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.js"></script>
<script type="text/javascript">
  jQuery.noConflict();
  (function(window,$) {
    window.jQuery_v1 = $;
  })(window,jQuery);
  delete jQuery;
</script>

加载第二版jQuery

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.js"></script>
<script type="text/javascript">
  jQuery.noConflict();
  (function(window,$) {
    window.jQuery_v2 = $;
  })(window,jQuery);
  delete jQuery;
</script>

使用两个版本的jQuery

<script type="text/javascript">
  // this is now one version of jQuery
  console.log(jQuery_v1);
  // this is now another version of jQuery
  console.log(jQuery_v2);
</script>