J'ai ajouté de nouveaux éléments via jQuery dans certains de mes projets, et je suis tombé sur un problème encombrant.Réenregistrer des événements avec jQuery
Considérez ce qui suit:
$('span.claim').click(function() {
$(this).parent().html('<span class="unclaim">Unclaim</span>'):
});
$('span.unclaim').click(function() {
$(this).parent().html('<span class="claim">Claim</span>'):
});
Et le balisage suivant ...
<ul>
<li><span class="claim">Claim</span></li>
<li><span class="unclaim">Unclaim</span></li>
<li><span class="claim">Claim</span></li>
<li><span class="unclaim">Unclaim</span></li>
</ul>
Malheureusement, après l'événement initial est tiré, aucun événement sont traités.
Je réalise que je pourrais complètement restructurer et utiliser la fonction .bind()
, mais en raison de la complexité de mon projet, ce n'est pas vraiment possible.
Comment est-ce que j'irais relâcher les événements après que les nouveaux éléments aient été créés sans abandonner mes fonctions anonymes, ou est-ce même possible?
Une raison pour créer de nouveaux éléments HTML au lieu de changer le texte et les noms de classe sur clic? – David
Il se passe beaucoup plus que simplement créer les éléments. C'était juste destiné à être un simple exemple de ce qui se passe, pas un littéral. – Skudd