2010-09-22 6 views
1

Au lieu de .show() et .hide() 'ing (ou .toggle() d'ailleurs), est-il possible de "basculer" un .remove() fonction?Basculer jQuery.remove()

Je réalise que .remove() supprime littéralement des éléments du DOM, il semble donc difficile de remplacer par magie les éléments supprimés une fois qu'ils sont partis, mais y a-t-il un moyen de faire semblant?

Remarque: Ils doivent être supprimés du DOM afin qu'ils soient ignorés par les lecteurs d'écran (les lecteurs d'écran AFAIK ne respectent pas les fonctions .show() et .hide()).

Merci.

--- EDIT ---

OK, .detach() pourrait fonctionner pour moi. Si mon balisage est:

<a href="#">Toggle images</a> 

<p><span>Some text here</span><img src='image1.png'/><img src='image2.png'/></p> 
<p><span>Some more text</span><img src='image2.png'/></p> 
<p><span>Even more text</span><img src='image5.png'/><img src='image1.png'/> 
    <img src='image5.png'/></p> 

Et en cliquant sur l'ancre, il supprimerait toutes les images, et en cliquant à nouveau serait restaurer. En utilisant .detach() comment cela fonctionnerait-il?

--- EDIT # 2 ---

Comme thenduks souligné, les lecteurs d'écran en fait font le respect display: none; qui change ma question un peu. Je me suis retrouvé avec un simple code à bascule. Merci!

Répondre

1

Vous pouvez enregistrer le ou les éléments DOM dans une variable pour les réintégrer ultérieurement.

Vérifiez l'exemple here.

+0

il y a une grande chance que '$ ('p'). Remove();' renverra null donc je ne pense pas 'savedNodes = $ ('p'). Remove();' fonctionnerait mais c'est le bonne idée – hunter

4

Vous pouvez essayer d'utiliser l'ajout récent de jQuery 1.4: detach pour les supprimer, puis les ajouter à nouveau plus tard.

+0

! ! ! parfait! ! ! – hunter

+0

Oui très pratique. J'ai eu un peu de code de tri sur un projet parallèle qui a été accéléré énormément après que jQuery 1.4 est sorti et j'ai commencé à l'utiliser. – rfunduk

+0

.detach() fonctionnerait. J'ai légèrement mis à jour ma question, puisque je ne l'avais jamais utilisée auparavant et l'exemple de l'API ne m'a fait que me troubler :) – farkenfooken