【问题标题】:jQuery 3.0 $(window).load(function(){});jQuery 3.0 $(window).load(function(){});
【发布时间】:2016-10-11 14:17:01
【问题描述】:

所以今天发布了 jQuery 3.0,由于某种原因,以下代码不再适用于我的网站:

$(window).load(function() {});

谁能建议我如何解决这个问题或在 /everything/ 加载时激活的替代方案?

【问题讨论】:

  • 你读过changelog吗?
  • @Karl-AndréGagnon 我的代码的 .on() 等价物是什么?
  • $(window).on('load', function(){})

标签: jquery


【解决方案1】:

读自breaking-change-load-unload-and-error-removed

重大更改:.load()、.unload() 和 .error() 已删除

这些方法是事件操作的快捷方式,但有一些 API 限制。事件 .load() 方法与 ajax .load() 方法冲突。由于 DOM 方法的定义方式,.error() 方法不能与 window.onerror 一起使用。如果您需要通过这些名称附加事件,请使用 .on() 方法,例如将 $("img").load(fn) 更改为 $(img).on("load", fn)。

因此,你需要改变:

$(window).load(function() {});

到:

$(window).on("load", function (e) {})

【讨论】:

  • 我确实在 3.1.1 版本上将其更改为 $(window).on('load', function (e) {}),但它仍然无法正常工作
  • 我发现在 on 之后使用单引号使其失败,我已将代码更改为 $(window).on("load", function (e) {}) 现在它可以工作了,我不知道为什么引号很重要。
  • 好的,现在任何一个都没有触发
  • @developer 如果您在 OnLoad 上运行它,则加载窗口已经执行。相反,如果你将它包装到你对 jQuery 说的 head 部分:在 dom Load 上运行它。由你决定。您可以使用标准的 jsfiddle.net 功能,因此您需要在加载时删除窗口,或者您可以自己处理它,将代码包装到 head 部分。
  • 非常感谢。 ;) 享受你在 Stack 上的溢出 :))))
猜你喜欢
  • 1970-01-01
  • 2019-11-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-19
  • 1970-01-01
  • 2020-09-24
  • 1970-01-01
相关资源
最近更新 更多