A problem may occur when using / switching to jQuery 3. This is because everything ready statesin the new is jQuery 3now completely asynchron. This means that there will be no order for your code.
- , load ready state. ready , , , load .
jQuery:
, ready state load. ready. .
$(window).on("load", function() {
console.log("window is loaded!");
});
, load ready state, .
var windowLoaded = false;
$(window).on("load", function() {
windowLoaded = true;
});
$(function() {
function afterLoad() {
console.log("loaded");
}
if( !windowLoaded ) {
$(window).on("load", afterLoad);
}
else {
afterLoad();
}
});
jQuery:
jQuery-, load. :
(function($, window) {
$.fn.myPlugin = function() {
$(window).on("load", start);
function start() {
console.log("plugin initialized and window loaded");
}
};
})(jQuery, window);
/ ready state, , :
$(function() {
$("#element").myPlugin();
});
, load , ready state.
(function($, window) {
var windowLoaded = false;
$(window).on("load", function() {
windowLoaded = true;
});
$.fn.myPlugin = function() {
if( !windowLoaded ) {
$(window).on("load", start);
}
else {
start();
}
function start() {
console.log("plugin initialized and window loaded");
}
};
})(jQuery, window);
:
, jQuery 3, / . , asynchron, , / ...