2010-10-27 5 views
1

J'essaye d'exécuter une méthode simple replace(); dans JavaScript où je voudrais enlever chaque classe d'un HTML element excepté un spécifique, comment je peux le faire?Expression régulière: remplacer tout mais pas un mot spécifique

J'ai essayé sans succès:

<div id="my_div" class="hello letsgo baby is_checked cool">Gordon Freeman</div> 

<script> 
$(document).ready(function() { 
    alert ($(#my_div).attr("class").replace (/^(is_checked)$/, "")); 
    // id'like it returns "is_checked" or "" to work like a boolean; 
}); 
</script> 
+0

pourrait vous donnez des exemples de ce qui devrait arriver et de ce qui ne devrait pas arriver? – Martijn

+0

Je suis désolé, j'ai été trop hâtive! – vitto

Répondre

2

Vous essayez d'alerter is_checked quand il est là, non? Essayez d'utiliser .hasClass:

$(document).ready(function() { 
    if($("#my_div").hasClass("is_checked")) { 
     alert("is_checked"); 
    } 
    else { 
     alert(""); 
    } 
}); 

Si vous voulez juste savoir si un élément a une certaine classe sur elle, cela renvoie vrai ou faux vous dire exactement cela:

$("#my_div").hasClass("is_checked") 
+1

lol, j'ai raté ça – vitto

0

Vous voulez supprimer toutes les classes, sauf un particulier? Vous pouvez utiliser la méthode attr() de jQuery et définir la classe spécifique:

$('#my_div').attr('class','is_checked'); 

Voici un exemple en action: http://jsfiddle.net/decHw/

également important de noter que si vous souhaitez sélectionner un élément jQuery par son id, vous devez envelopper entre guillemets. Vous avez:

$(#my_div) 

Il devrait être:

$('#my_div') 
0
$(document).ready(function() { 
    if ($(this).hasClass('is_checked') { 
     $(this).removeClass(); 
     $(this).addClass('is_checked'); 
    } 
}); 
0
if ($(this).hasClass('is_checked')) 
    $(this).removeClass().addClass('is_checked'); 
else 
    $(this).removeClass(); 
Questions connexes