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($('...');