在一个页面上使用两个jQuery是否存在任何已知问题?

时间:2014-07-24 06:53:27

标签: jquery multiple-instances

我们有一个在noConflict模式下使用jQuery的项目。该产品的用户使用自己的jQuery版本。结果是在页面上有两个版本的jQuery(一个在noConflict(真)模式,另一个在普通/全局模式)。

这种方法有任何已知问题吗?官方文件说

  

如果由于某种原因加载了两个版本的jQuery(不建议这样做)......

但它没有说出原因。

2 个答案:

答案 0 :(得分:1)

可以使用两个或更多版本的jQuery,但只有正确且非常谨慎地完成。一般而言,如果可能的话,应该避免出于以下原因:

  1. 在页面处于活动状态时,加载多个版本的jQuery需要更长时间才能下载并消耗更多内存。 jQuery的设计人员在他们看到人们包括多个版本的jQuery以及消耗的内存/下载量增加一倍或三倍时,他们可能会非常努力地使用他们所拥有的代码量来实现这么多功能。
  2. 对于任何给定的代码段,您必须非常仔细且一致地只访问正确版本的jQuery。在同一代码段中混合版本可能会导致意外问题。
  3. 您无法在版本之间共享某些类型的数据。例如,如果您在一个jQuery版本中使用$(elem).data("key", info)设置了一些信息,则该数据将无法在其他版本的jQuery中使用,因为它们各自都有自己的.data()存储库。
  4. 您无法在版本之间共享事件处理程序。例如,如果您使用一个版本执行.on(),并且尝试与另一个版本执行.off()以清除给定对象上的所有jQuery事件处理程序,则只会删除安装在其中的事件处理程序当前版本的jQuery(再次因为每个版本的jQuery都拥有它自己的事件处理程序存储),而不是与另一个版本一起安装的版本。

答案 1 :(得分:0)

没有问题,由于jQuery的noconflict模式,你可以拥有一个包含两个或更多jQuery版本的程序。

顺便说一句jQuery文档说:

  

" [..](不推荐)[..]"

在我的观点中,因为引入新问题,你必须记住始终使用指定版本的特定jQuery函数:

jQuery_1_x_y('#el').function(); 
jQuery_1_k_z('#el').function();