101 votes

fonction jQuery après .append

Comment appeler une fonction une fois que jQuery .append est complètement terminé ?

Voici un exemple :

 $("#root").append(child, function(){
   // Action after append is completly done
});

Le problème : lorsqu'une structure DOM complexe est ajoutée, le calcul de la nouvelle taille de l'élément racine dans le rappel de la fonction d'ajout est erroné. Les hypothèses sont que le DOM n'est toujours pas complètement chargé, seul le premier enfant du DOM complexe ajouté l'est.

34voto

Bien que Marcus Ekwall ait absolument raison sur la synchronicité de l'ajout, j'ai également constaté que dans des situations étranges, le DOM n'est parfois pas complètement rendu par le navigateur lorsque la ligne de code suivante s'exécute.

Dans ce scénario, les solutions de shadowdiver vont dans le bon sens - avec l'utilisation de .ready - mais il est beaucoup plus ordonné de chaîner l'appel à votre ajout d'origine.

 $('#root')
  .append(html)
  .ready(function () {
    // enter code here
  });

5voto

msangel Points 1716

J'ai une autre variante qui peut être utile à quelqu'un :

 $('<img src="http://example.com/someresource.jpg">').load(function() {
    $('#login').submit();
}).appendTo("body");

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X