415 Stimmen

jQuery removeClass Platzhalter

Gibt es eine einfache Möglichkeit, alle übereinstimmenden Klassen zu entfernen, zum Beispiel,

color-*

wenn ich also ein Element habe:

<div id="hello" class="color-red color-brown foo bar"></div>

nach dem Entfernen, wäre es

<div id="hello" class="foo bar"></div>

Merci !

753voto

jimmystormig Punkte 10472

En removeClass Funktion benötigt ein Funktionsargument, da jQuery 1.4 .

$("#hello").removeClass (function (index, className) {
    return (className.match (/(^|\s)color-\S+/g) || []).join(' ');
});

Live-Beispiel: http://jsfiddle.net/xa9xS/1409/

107voto

Kobi Punkte 129985
$('div').attr('class', function(i, c){
    return c.replace(/(^|\s)color-\S+/g, '');
});

55voto

Pete B Punkte 1639

Ich habe ein Plugin geschrieben, das dies tut: alterClass - Remove element classes with wildcard matching. Optional können Klassen hinzugefügt werden: https://gist.github.com/1517285

$( '#foo' ).alterClass( 'foo-* bar-*', 'foobar' )

18voto

Charly Guirao Punkte 449

Wenn Sie es an anderen Stellen verwenden möchten, empfehle ich Ihnen eine Erweiterung. Diese hier funktioniert bei mir gut.

 $.fn.removeClassStartingWith = function (filter) {
    $(this).removeClass(function (index, className) {
        return (className.match(new RegExp("\\S*" + filter + "\\S*", 'g')) || []).join(' ')
    });
    return this;
};

Verwendung:

$(".myClass").removeClassStartingWith('color');

17voto

tremby Punkte 8584

Ich habe dies in ein Jquery-Plugin, das eine Regex als Argument nimmt verallgemeinert.

Kaffee:

$.fn.removeClassRegex = (regex) ->
  $(@).removeClass (index, classes) ->
    classes.split(/\s+/).filter (c) ->
      regex.test c
    .join ' '

Javascript:

$.fn.removeClassRegex = function(regex) {
  return $(this).removeClass(function(index, classes) {
    return classes.split(/\s+/).filter(function(c) {
      return regex.test(c);
    }).join(' ');
  });
};

In diesem Fall wäre die Verwendung also (sowohl Kaffee als auch Javascript):

$('#hello').removeClassRegex(/^color-/)

Beachten Sie, dass ich die Array.filter Funktion, die im IE<9 nicht existiert. Sie könnten verwenden Die Filterfunktion von Underscore stattdessen oder Google für ein Polyfill wie diese WTFPL eins .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X