С JQuery <= 2.x, този код работи, показвайки текста в div
след като всичко беше натоварено:
<!DOCTYPE html>
<html>
<head>
<title>JQuery 3 Window onload test</title>
</head>
<body>
<div id="my_div" style="visibility:hidden">Greetings!</div>
<script src="jquery.js"></script>
<script>
$(function () {
$(window).on("load", function () {
$("#my_div").css("visibility", "visible");
});
});
</script>
</body>
</html>
С новия JQuery 3.0.0, div не се показва. Ако обаче премахна напълно условието за зареждане на прозореца, както следва:
$(function () {
$("#my_div").css("visibility", "visible");
});
... тогава работи, или ако преместя прозореца на зареждане извън документа, готов по следния начин:
$(function () {
// other things I need to do once the document is ready
});
$(window).on("load", function () {
$("#my_div").css("visibility", "visible");
});
... тогава тя също работи. Има документация, която очевидно се отнася до това, което се случва в моя пример тук, на страницата за информация за миграция / обновяване на JQuery.
Изясняване от JQuery гурута ще бъдетъй като сега трябва да преработим много файлове, за да се приспособим към това поведение и искам да го направя по правилния начин с очакваното поведение, което се случва както в миналото. Много благодаря!
Отговори:
0 за отговор № 1Опитайте да използвате:
$(document).ready(function(){
$("#my_div").css("visibility", "visible");
});
0 за отговор № 2
Можете безопасно да манипулирате DOM в готовността за обновяване на документ:
$(function() { // or $(document).ready(), they are equivalent
$("#my_div").css("visibility", "visible");
});
В този пример не виждам необходимост от събитие при зареждане на прозореца, но ако искате да чакате всичко в прозореца за зареждане можете да добавите слушателя на събитието от всяка точка на документа, без да е необходима готовност за документи:
$(window).on("load", function() {
$("#my_div").css("visibility", "visible");
});
0 за отговор № 3
Това ми се струва като условие за състезание във вашетокод готов документ и функция за зареждане на прозореца ще се задейства едновременно. Така че, докато прикачите слушател на натоварване на прозореца, това събитие щеше да изтече. Защо работи в стария jQuery? Не знам и не ми пука, защото, както изтъкнаха другите, няма да кодирате така.
Ако поставите изображение в документа, ще забавите товара и ще го хванете.
https://jsfiddle.net/mowglisanu/13wfqdbL/
<img src="/images/http://placehold.it/300x300">