2010-09-11 4 views
1

cela me rend fou ;-) J'ai une chaîne avec diverses balises span ... Je veux supprimer toutes les balises span sauf celles avec le nom de classe XYZ ... le problème est que je nai trouvé une solution pour laisser la balise de fermeture ...JS/Jquery/RegEx - Supprimer toutes les balises sauf celles avec le nom de classe XYZ

Mon point de départ est la regex:

text = text.replace(/<\/?[^>]+(>|$)/g, ""); 

Mais tout ce que j'essayé de dire « DO IT SI NE MATCH classnameXYZ Echec jusqu'à maintenant ...

Des idées? Merci à avance!

Répondre

1

Ok, cela fonctionne pour mes besoins ;-)

   $('#text > span').each(function(intIndex){ 
        var word; 
        if ($(this).hasClass('checked')) { 
         word = "<span>"+$(this).html()+"</span>"; 
        } else { 
         word = $(this).html(); 
         word = word.replace(/<\/?[^>]+(>|$)/g, ""); 
        } 
        console.log(word); 
       }); 
0

Cela peut être fait avec une expression régulière, plus sur votre answer besoin de mettre en cache la totalité du HTML, ce qui serait lent, essayez la dessous du code, il peut aider :)

$(function() 
    $('#text > span').each(function() { 
     if(!$(this).hasClass('XYZ')) { 
      $(this).remove(); 
     } 
    }); 
}); 
+0

Hmm, pour autant que je comprends cela supprime tout l'élément ... – Bosh

+0

Dans votre question 'Supprimons tous les tags sauf ceux avec classname XYZ' qu'est-ce que tu veux dire par Supprimer tous les tags ?? Ne s'agit-il pas de supprimer l'élément entier? –

Questions connexes