2016-10-09 4 views
0

正確なクラス名(接頭辞のみ)がわからないときに、要素からクラスを削除する簡単な方法はありますか?指定されたパターンと同じ名前のCSSクラスをすべて削除しますか?

最初はこれが奇妙に聞こえるかもしれませんので、私は明確にする例を挙げます:ブートストラップボタンはbtn-primary xor btn-success xor btn-danger xor ...適用されている可能性があります。私はこのクラスを削除して、新しいクラスを適用したいと思います。

現在、私はしている:

let btnClasses = [ 'btn-primary', 'btn-success', ... ]; 
$.each(btnClasses, function(i, x) { 
    $(myElem).removeClass(x); 
}); 

私は似て何かを持ってみたい:

$(myElem).removeClass('btn-*'); 

はそうするための組み込みの方法はありますか?

+0

グレートキャッチ!間違った検索語を使用している必要があります。ありがとう! –

答えて

1

jQuery用の独自のプラグインを作成することもできます。別の名前が付けられていますが、それは一つの方法です。

$.fn.removeClassRegex = function (pattern) { 
 
    var element = $(this); 
 
    var classNames = element.attr('class').split(' '); 
 
    $(classNames).each(function (key, value) { 
 
    if (value.match(pattern)) { 
 
     element.removeClass(value); 
 
    } 
 
    }); 
 
} 
 

 
$('div').removeClassRegex('test-[a-z]'); 
 
console.log($('div').attr('class'));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="test-bar foo"> 
 
</div>

+0

よい代替 - あなたの努力に感謝 - upvoted!それでも、個人的には、リンクされた複製に記載されているように組み込みの方法を使用します。 –

+0

ええ、ちょうどその答えを読んで、はるかに良い解決策です –

関連する問題