10
votes

JQuery - Supprimer toutes les classes avec des noms similaires

Y a-t-il un meilleur moyen de faire cela? XXX

Je veux supprimer toutes les classes de classe- (n).


0 commentaires

4 Réponses :


9
votes

Obtenez les classes de l'élément, le traiter comme une chaîne et le remettez-le:

$('element').attr(
  'class',
  $('element').attr('class').replace(/\bclass-\d+\b/g, '')
);


4 commentaires

Le sélecteur serait éteint par élément cependant, je l'écrirais comme ceci: $ ('élément'). ATTR ('classname', fonction (i, c) {retour c.replace (/ \ bclass- \ d + \ b / g, '');});


@NICK CRAVER: Oui, ce serait utile si vous devez l'appliquer à des éléments de Seveal. :)


L'attribut doit être "classe", pas "Nom de classe", par ex. $ ('élément'). Attrib ('classe', $ ("élément '). ATTR (" classe "). Remplacer (/ \ bclass- \ d + \ b / g,' '));


@ T1GOR: La méthode attr a changé car la réponse a été postée. J'ai édité la réponse pour inclure le code qui fonctionne avec des versions ultérieures de JQuery.



1
votes

le faire de manière meilleure à l'aide du sélecteur CSS, [TYPE * = VALEUR] CODE>

$(function() {
    var i = 0;
    while( ++i <= 105) {
        $('b').addClass('class-'+ i);
    }
  var clas = '';
  var arey =[]
    $('input[type=button]').click(function() {  
        clas = $('b').attr('class');
        arey = clas.match(/class-\d{1,3}/g);
        $.each(arey, function(i, e) {
            $('b').removeClass(e);      
        });
    });
}); 


4 commentaires

Cela supposerait que chaque élément n'a qu'une classe avec classe - et qu'ils apparaissent dans l'ordre numérique parfait dans le document. Je ne pense pas que ce soit le point de la question.


@patrick, oui tu as raison. Y a-t-il une meilleure façon de faire cela en utilisant le même sélecteur? Je suis juste curieux de savoir


@Nick Craververs Répondre (dans le commentaire sous la réponse acceptée) est probablement la meilleure façon d'aller, bien qu'elle nécessite JQuery 1.4 ou plus tard. Je posterai une réponse qui fonctionnerait pour Pre-JQuery 1.4.


Oui, cela semblerait fonctionner si vous n'avez qu'un seul élément. S'il y en a plus d'un, vous voudriez placer votre code dans un .uite () et utiliser chaque élément individuellement. Un peu compliqué, mais devrait travailler. : o)



0
votes

... ou vous pouvez utiliser un Démarre avec sélecteur Si vous connaissez les noms de classe possibles que vous souhaitez supprimer. La partie méchant de la tâche est le nombre de classes à rechercher ... XXX


0 commentaires

11
votes

Voici un petit plugin JQuery que j'utilise à cet effet:

$(...).removeClassWild('class-*');


0 commentaires