jQuery: impossible de sélectionner simplement un élément ajouté

Voici ce qui se passe lors d’un événement:

$('div#pages').append($('
...
'));

Et puis, sur un autre événement, cela échoue:

 var page = $('div.page#test'); // returns empty array 

J’ai débogué et le code HTML ajouté apparaît dans la structure du document après l’ajout, mais ne parvient pas à être sélectionné. Faire la même chose dans la console du navigateur fonctionne parfaitement.
Quel pourrait être le problème?

Utilisez .find() http://api.jquery.com/find

 var page = $('div#pages').find('div.page#test'); 

Avait le même problème, a constaté que si j’ajoutais l’auditeur avant d’append la div, il ne trouverait pas la div. Assurez-vous d’append l’écouteur après avoir créé l’object.

J’ai dû utiliser un hack pour résoudre ce problème récemment lorsque j’insérais de manière dynamic des éléments . J’ai changé ceci:

 var $item = $('#appendedItem1'); // returns: [] 

pour ça:

 var $item = $(document.getElementById('appendedItem1')); // returns: [select#appendedItem1] 

Je sais qu’il semble que ce devrait être exactement la même chose, mais seul le second fonctionne.

Vous avez juste besoin d’utiliser la méthode live :

 $('.element').live('click', function(){ alert($(this).html()); }); 

citations manquées sur la page nom de la classe

Également manqué ) pour append()

Devrait être

  $('div#pages').append($('
...
'));

au lieu de

 $('div#pages').append($('
...
');