【问题标题】:load() method deprecated?load() 方法已弃用?
【发布时间】:2012-09-20 12:35:24
【问题描述】:

我在浏览 jQuery api 时发现 load method 在已弃用列表中。

类别:已弃用 |事件 > 文档加载

我通常使用这种方法来检查图像是否完全加载。为什么它被弃用?我应该改用什么?

【问题讨论】:

  • 可能是因为它与更早执行的$(document).ready 混淆了?
  • @Sparky,有一个load() 方法load 事件注册一个处理程序(on("load")的快捷方式) .现在确实不推荐使用该方法,而支持on()
  • 是的,在 SO,挑剔技术语义是我们所做的,或者应该做的。
  • @Sparky,好的,让我们再试一次。 DOM 层公开了一个load 事件。 jQuery 提供了$.fn.load() 方法 来为该事件注册一个处理程序。该方法还有另一个用途(AJAX 请求)。但那是方法,不是事件(可以调用,事件不能调用,只能触发)。文档页面被命名为load-event 以消除该方法的两个用途之间的歧义,但它仍然记录了一个方法
  • 啊,是的@FrédéricHamidi,我明白了。没有异议。我一直记得它在docs 中的描述,“将 event 处理程序绑定到“加载”JavaScript event。”。谢谢你的详细解释。

标签: jquery


【解决方案1】:

在 jQuery 中弃用的加载函数替代它是你可以使用的,就像

$("iframe").on("load",function()
{
	
	alert("on loaded iframe");
	
});	

这项工作非常适合 jquery-3.1.1。

【讨论】:

    【解决方案2】:

    如果load 没有按预期工作,替代方法是:

    $(window).one("scroll", foo);
    

    或者

    $(window).one("scroll", function(){/*...*/});
    

    具体来说,当DOMContentLoaded 无法按预期工作时,滚动事件绑定在Android 中很有用,而当onreadystatechange 无法按预期工作时,滚动事件绑定在Android 中很有用。

    参考文献

    【讨论】:

    • 它不是负载的替代品或好的解决方法 -_- ,请参阅:api.jquery.com/one
    • @Al-Mothafar Scroll 事件绑定至少在某些platformsscenariosbrowsers 中有效。
    • @Al-Mothafar 为什么你会期望 onload 触发多次,使得 .one 成为必要?
    • @PaulSweatte 链接的一篇文章是旧的,第二篇已经没有了,最后一篇应该与 jQuery 的加载事件无关。确实,iOS 8 在极少数情况下根本不会触发 load 事件。 stackoverflow.com/questions/31744477
    • jquery docs on load 现在强调它的失败之处,“有几个已知的警告应该注意......”
    【解决方案3】:

    请参阅 bug #11733,其中记录了此弃用:

    .load() 方法是一个模棱两可的签名,它可以是 ajax 加载或附加/触发“加载”事件。 CCAO 无法区分它们,因为 这是一个基于参数的动态决定。

    为避免与方法签名相关的歧义,现在建议改用on()。例如:

    $("selector").load(function() {
        // ...
    });
    

    应该变成:

    $("selector").on("load", function() {
        // ...
    });
    

    【讨论】:

    • 并非如此,on() 总是打算这样使用。它取代了bind() 以及delegate()live()。我想说自从引入on() 以来,绑定事件和委托事件之间的区别(在注册方法方面)已经消失。
    • 我同意使用,但是如果我有要加载的 URL 怎么办,所以我的代码是 $methods.load(url, function () { //do smething });其中方法是具有 html 元素的变量,所以我想用 $methods.on('load', url, function(){//do something});可悲的是它不工作
    • 它给出了语法错误的控制台错误,无法识别的表达式:到 URL
    猜你喜欢
    • 2016-06-08
    • 2020-11-28
    • 1970-01-01
    • 2016-10-15
    • 2012-03-04
    • 2019-07-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多