Mam element DIV, do id="a"
którego może być dołączona dowolna liczba klas z kilku grup. Każda grupa ma określony prefiks. W javascript nie wiem, która klasa z grupy znajduje się w div. Chcę mieć możliwość wyczyszczenia wszystkich klas z podanym prefiksem, a następnie dodania nowego. Jeśli chcę usunąć wszystkie klasy zaczynające się od „bg”, jak mam to zrobić? Coś takiego, ale to faktycznie działa:
$("#a").removeClass("bg*");
javascript
jquery
css
Ćwiek
źródło
źródło
Dzielenie wyrażeń regularnych na granicy słów
\b
nie jest najlepszym rozwiązaniem:lub jako mixin jQuery:
Aktualizacja ES6 2018:
źródło
filter
musi zwracać wartość logiczną. To zadziała:var classes = $(e).attr("class").split(" "); $(classes).each(function(i, item) { classes[i] = item.indexOf("prefix") === -1 ? item : "prefix-new"); }); $(e).attr("class", classes.join(" "));
$e.attr('class', $.map($e.attr('class').split(' '), function (klass) { return klass.indexOf(prefix) != 0 ? klass : undefined; }).join(' '));
class="blackRow blackText orangeFace blackHead"
zwróci,class=" orangeFace "
jeśli uruchomiszremoveClassPrefix("black");
. Rozwiązałem to przez przycinanie wynik taki sposób:el.className = $.trim(classes.join(" "));
.Napisałem prostą wtyczkę do jQuery - alterClass , która usuwa klasę symboli wieloznacznych. Opcjonalnie doda również klasy.
źródło
Nie potrzebujesz żadnego kodu specyficznego dla jQuery, aby to obsłużyć. Po prostu użyj RegExp, aby je zastąpić:
Możesz to zmodyfikować, aby obsługiwać dowolny prefiks, ale szybsza metoda jest powyżej, ponieważ RegExp zostanie skompilowana tylko raz:
źródło
Korzystanie 2nd podpis z
$.fn.removeClass
:źródło
http://www.mail-archive.com/[email protected]/msg03998.html mówi:
... i .removeClass () usunie wszystkie klasy ...
Mi to pasuje ;)
Twoje zdrowie
źródło
Podejście, którego użyłbym przy użyciu prostych konstrukcji jQuery i funkcji obsługi tablic, polega na zadeklarowaniu funkcji, która przyjmuje identyfikator kontrolki i prefiks klasy i usuwa wszystkie sklasyfikowane. Kod w załączeniu:
Teraz tę funkcję można wywołać z dowolnego miejsca, jednym kliknięciem przycisku lub z kodu:
źródło
Szukałem rozwiązania dla dokładnie tego samego problemu. Aby usunąć wszystkie klasy zaczynające się od przedrostka „fontid_” Po przeczytaniu tego artykułu napisałem małą wtyczkę, której teraz używam.
Stosowanie:
źródło
W przypadku nowoczesnych przeglądarek:
źródło
Wiem, że to stare pytanie, ale znalazłem nowe rozwiązanie i chcę wiedzieć, czy ma wady?
źródło
W jednej linii ... Usuwa wszystkie klasy, które pasują do wyrażenia regularnego someRegExp
źródło
Odpowiedź Prestaula była pomocna, ale nie do końca mi się to udało. Sposób jQuery do wybierania obiektu według identyfikatora nie działał. Musiałem użyć
zamiast
źródło
Używam również łącznika '-' i cyfr jako nazwy klasy. Więc moja wersja zawiera „\ d-”
źródło
źródło
źródło