web-dev-qa-db-fra.com

Faites quelque chose APRES que la page soit complètement chargée

J'utilise des codes incorporés qui insèrent du code HTML dans la page de manière dynamique et comme je dois modifier ce code HTML inséré de manière dynamique, je veux qu'une fonction jQuery attende que la page soit chargée. J'ai essayé delay mais cela ne semble pas fonctionner.

Ainsi, par exemple, le HTMl inséré dynamiquement a un élément div#abc

et j'ai cette jquery:

if ( $('#abc')[0] ) { 
  alert("yes");
}

l'alerte ne s'affiche pas.

J'apprécierais toute aide

Merci

21
3zzy
$(window).load(function () {
    ....
});

Si vous devez attendre un iframe (et ne vous souciez pas des actifs, juste du DOM), essayez ceci:

$(document).ready(function() { 
    $('iframe').load(function() { 
       // do something
    });
});
43
Zoltan Toth

C'est le but de jQuery's .ready() event:

$(document).ready(function() {
    if ( $('#abc').length ) //If checking if the element exists, use .length
        alert("yes");
});

Description: spécifie une fonction à exécuter lorsque le DOM est complètement chargé.

9
James Hill

L'utilisation de jQuery.ready devrait suffire. Essaye ça

$(document).ready(function(){
   //your code here
});

ou

$(function(){

});

qui est un raccourci de la première.

7
Juri

Essaye ça:

$(document).ready(function () {
    if ( $('#abc')[0] ) { 
      alert("yes");
    }
});
4
DJ Quimby
$(window).load(function () { ... }

peut être suffisant, mais sinon votre code intégré (quel que soit ce qui peut être) peut fournir une fonctionnalité de rappel que vous pouvez utiliser.

delay () ne devrait être utilisé que pour retarder animations .

1
Stefan

Généralement, pour gérer mon JQuery avant ou après les chargements de page, utilisera:

jQuery(function($){
    // use jQuery code here with $ formatting
    // executes BEFORE page finishes loading
});

jQuery(document).ready(function($){
    // use jQuery code here with $ formatting
    // executes AFTER page finishes loading
});
0
allenski