2010-02-11 20 views
2

Existe-t-il un moyen de conserver une déclaration telle que la suivante à tous les éléments correspondants ajoutés ultérieurement au DOM?Méthode de persistance jQuery fictive

$("a.my-class").replaceWith("<span>Replaced</span>"); 

Quelque chose le long des lignes de ...

$("a.my-class").persist().replaceWith("<span>Replaced</span>"); 

(persist est une méthode fictive, que j'espère Transmet ce que je voudrais accomplir.)

+0

Toujours pas sûr que je comprends tout à fait. Si (en théorie) persistent existait de la manière que vous décrivez, alors votre deuxième appel le viderait! –

+0

Donc, vous préférez que je le dise comme ça? $ (".mon-classe"). Persist (function() {$ (this) .réplaceWith (" Remplacé")}); – jerome

Répondre

0

La méthode live() dans jquery fait quelque chose de similaire mais c'est pour les événements.

Vous pouvez éventuellement utiliser en direct() et l'événement de charge pour obtenir ce que vous cherchez, quelque chose comme (non testé):

$("a.my-class").live('load',function(){ 
    $(this).replaceWith("<span>Replaced</span>"); 
}); 
+0

Il n'y a pas de rechargement de page pour baser un événement sur. Les éléments DOM sont ajoutés via AJAX. – jerome

+0

Ce qui précède ajoute un chargement d'événement de chargement à l'élément que vous ajoutez via AJAX ('a.my-class'), pas le chargement de la page. Comme je l'ai dit, ce n'est pas testé. – Fermin

1

Il n'y a pas une méthode exactement comme ce que vous voulez, mais si le contenu est ajouté en utilisant les méthodes AJAX jQuery, vous pouvez utiliser ceci:

$("<div></div>").ajaxSuccess(function(){ 
    $("a.my-class").replaceWith("<span>Replaced</span>"); 
}); 

Et ce code courrons après chaque demande AJAX avec succès, à condition que les demandes sont faites au moyen d'un appel jQuery $.ajax (inclu ding $.post ou $.get). Vous avez seulement besoin de l'appeler une fois sur votre page et il se déclenchera sur tout appel AJAX effectué.

Si vous rencontrez des problèmes avec le remplacement se passe trop tôt:

$("<div></div>").ajaxSuccess(function(){ 
    window.setTimeout(function(){ 
     $("a.my-class").replaceWith("<span>Replaced</span>"); 
    }, 250); 
});