gestionnaire en direct jQuery mais pour chaque ()?
-
27-09-2019 - |
Question
Je sais que live()
peut être utilisé pour soutenir les gestionnaires d'événements pour le courant et « ajouté plus tard » éléments DOM.
Je me demande comment faire la même chose avec each()
?
Comme si je l'ai $('.something_or_other').each()
mais un autre élément DOM avec class="something_or_other"
est ajouté? Comment puis-je configurer pour appliquer automatiquement chaque itération de ce nouvel élément DOM?
OU, que puis-je appeler après avoir ajouté le nouvel élément DOM à réappliquer les règles de each()
.
(affichage de mon âge un peu ici, mais dans le comportement que nous pouvons utiliser Behaviour.apply()
à une nouvelle demande toutes les règles!)
La solution
@meder noté, vous devriez vraiment le faire manuellement. Vous pouvez utiliser la même fonction pour les deux si vous le souhaitez.
function myFunction(i,val) {
$(this).doSomething;
}
$('someSelector').each( myFunction );
$.ajax({
url:'/some/path/',
success: function( data ) {
$(data).find('someSelector').each( myFunction )
.end().appendTo('body');
}
});
Si vous vraiment ne voulez pas faire cela, il y a un plugin appelé livequery
qui exécuter du code lorsqu'un élément qui correspond à un sélecteur est ajouté à (ou retiré) DOM.
Il en coûte un peu de frais généraux supplémentaires, mais il est une option.
Autres conseils
Pourquoi tu ne peux pas lier la fonctionnalité au rappel ajax qui ajoute les éléments DOM à la doc? Semble le plus court et l'itinéraire le plus logique pour moi.