代码之家  ›  专栏  ›  技术社区  ›  ondrej

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

  •  0
  • ondrej  · 技术社区  · 11 年前

    我们有一个在noConflict模式下使用jQuery的项目。此产品的用户使用自己版本的jQuery。结果是,在页面上有两个版本的jQuery(一个处于noConflict(true)模式,另一个处于normal/global模式)。

    这种方法是否存在任何已知问题?官方文件显示

    如果由于某种原因加载了两个版本的jQuery(这是不推荐的)。。。

    但它没有说明原因。

    2 回复  |  直到 11 年前
        1
  •  1
  •   jfriend00    11 年前

    可以使用两个或更多版本的jQuery,但前提是必须正确且非常小心地执行。一般而言,应尽可能避免以下原因:

    1. 加载jQuery的多个版本需要更长的下载时间,并且在页面处于活动状态时会消耗更多的内存。jQuery的设计者们非常努力地在代码量上获得如此多的功能,当他们看到人们使用多个版本的jQuery并将内存/下载量增加一倍或三倍时,他们可能会感到畏缩。
    2. 对于任何给定的代码段,您必须非常谨慎且一致地只访问jQuery的正确版本。在同一段代码中混合版本可能会导致意外问题。
    3. 不能在版本之间共享某些类型的数据。例如,如果您使用 $(elem).data("key", info) 在jQuery的一个版本中,该数据在另一个版本的jQuery中不可用,因为它们都有自己的数据 .data() 存储库。
    4. 不能在版本之间共享事件处理程序。例如,如果您 .on() 有一个版本,你可以尝试 .off() 为了清除给定对象上的所有jQuery事件处理程序,您将只删除当前版本jQuery中安装的事件处理程序(同样,因为每个版本的jQuery都有自己的事件处理存储),而不是与其他版本一起安装的事件。
        2
  •  0
  •   Luca Davanzo    11 年前

    没有问题,由于jQuery的无冲突模式,您可以使用两个或多个jQuery版本的程序。

    顺便说一句,jQuery文档说:

    “[..](不推荐)[..]”

    在我看来,这是因为引入了新问题,所以必须记住始终使用指定版本的特定jQuery函数:

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