【问题标题】:jQuery: Update jQuery-version on the fly via $.getScriptjQuery:通过 $.getScript 即时更新 jQuery 版本
【发布时间】:2012-10-08 11:58:31
【问题描述】:

如果您在以 jQuery 1.7.x 开始的环境中,是否有任何风险运行$.getScript 并加载最新版本的 jQuery (1.8.3)?

它会正确覆盖更新后的函数还是会有冲突

$.getScript('http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js')

【问题讨论】:

  • 它可能会搞砸你所有的事件绑定,就像你以正常方式包含两个版本的 jQuery 一样(来源:我已经这样做了)
  • @MikeRobinson 如果您先在脚本中执行此操作会怎样?
  • 把我的想法变成了真正的答案

标签: jquery on-the-fly dynamic-script-loading


【解决方案1】:

它可能会搞砸你所有的事件绑定,就像你以正常方式包含两个版本的 jQuery 一样。

它将是异步的,因此您的所有其他脚本将在 getScript 完成之前执行。这对您的插件来说尤其麻烦,因为它们将自己绑定到 jQuery.fn 命名空间。加载新脚本后,它将重新创建 jquery 对象并清除对插件的引用。

您实际上将对 jquery 对象执行出厂重置。

话虽如此,您可以将初始化代码放在 getScript 回调中,但您只能使用核心 jQuery 而不能使用任何插件。

$.getScript('http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js', function() {
    console.log("Hi there");
})

【讨论】:

  • 如果你没有任何插件,你把所有的逻辑都放在$.getScripts success-参数中,在脚本加载后调用呢?
  • 哈哈,刚刚贴出来测试了一下
  • 我想强调这是个坏主意
  • 毫无疑问! :) 这是一个思想实验和一个针对可能出现的最坏情况的后备计划的混合体。
【解决方案2】:

你可以 $.noConflict jquery 走出大门,这应该删除 window.$,然后使用 jQuery.getScript 将最新的 jquery 加载到 window.$。

也许?这纯粹是一个建议,我从来没有这样做过。

jquery noConflict

【讨论】:

    【解决方案3】:

    下面是如何使用 noconflict AND getscript 在包含的块中加载较新版本的 jquery/jqueryui,以防您在已经加载其他版本的上下文中工作。

    http://www.ipreferjim.com/2011/06/loading-newer-versions-of-jquery-and-jquery-ui-noconflict/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-16
      • 1970-01-01
      • 1970-01-01
      • 2011-10-15
      • 2012-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多