2016-11-24 59 views
2

我有一个预加载器,它在jQuery v3.1.1中停止工作。jQuery v3.1.1 - 窗口加载

$(window).load(function() { 
    $(".loader").fadeOut("slow"); 
}); 

我将它改为下面的代码,但它不能正常工作。装载机不会隐藏。只有在刷新页面后,才开始工作。

$(window).on("load", function() { 
    $(".loader").fadeOut("slow"); 
}); 
+2

(https://jsfiddle.net/7juqbocd/)请更新与[MCVE]证明了问题的问题。 –

+0

我测试过一个页面上的代码,它工作正常。请提供更多代码来查找问题。 –

+2

请务必在任何其他事件中包装它,例如文件准备就绪。查看更多信息:https://github.com/jquery/jquery/issues/3194 –

回答

1

您更改的代码似乎是正确的。 我不认为这是因为你对jQuery 3.1.1的更新。

但可能是因为您的网站上的其他脚本存在错误,导致该脚本不再被触发。你的网站有任何javascript错误吗?

也许尝试在jQuery实现后直接更改“load”函数的位置。

+0

问题是因为OP是嵌套事件。在评论中看到,他正在从文档准备好的jq伪事件中限制加载事件。但问题是缺少这个重要的信息 –

1

在jQuery 3.x中删除了jQuery加载事件。见http://api.jquery.com/load-event/

你可以这样做,而不是:[为我工作]

window.onload = function() { 
    $(".loader").fadeOut("slow"); 
} 
+1

OP已经在jQuery上使用相关的替代方法:'$(window).on(“load”,handler);'。顺便说一句,使用'window.onload'属性来设置处理程序是不好的,因为使用这种方式,你只能绑定一个事件。使用'addEventListener()'DOM方法会更合适 –

+0

@ A.Wolff你当然是对的......但是,他似乎并不知道jQuery 3.x中没有更多的加载事件。 – Flyer53

+0

我认为他知道这一点,因为他发布替代问题本身:)否则,这仍然是一个很好的信息 –