1

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

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

jQuery.noConflict();  

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

那么我该如何避免这些问题

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

提前致谢。请不要说不包括 JQuery ,使用普通 JS :)

4

2 回答 2

3

这很简单。

首先加载您喜欢的 jQuery,并通过使用省略现有 jQuery 的任何冲突来处理它,

    $yourJQ = window.jQuery.noConflict(true);

在您希望使用 jQuery 的所有函数中,在匿名范围内使用 $yourJQ。像这样,

   (function($){
     // external library code   

    })($yourJQ);

希望这可以帮助

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

于 2013-06-18T07:57:33.580 回答
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>
于 2013-06-18T07:40:55.470 回答