0

jQueryでマルチクラスを削除したいのですが、このようなid要素があります

<div id="progress">content here</div>

時々それはこのように見えることができます

<div id="progress" class="progress progress-danger">content here</div>

またはそのように見えることができます

<div id="progress" class="progress progress-warning">content here</div>

私の問題は、そこからすべてのクラスを削除したい場合ですprogress-*

プログレスクラスを取得したタイプのX行を削除する必要があります。

このような

$('#progress').removeClass('progress-danger');
$('#progress').removeClass('progress-warning');

誰かが私を助けることができるかもしれません、

4

4 に答える 4

3

.attr()関数を2番目の引数として取ることができるので、それを使用して、RegExp、f.exを使用して見つかった各要素のclassNameを解析できます。

$('#progress').attr('class', function() {
    return this.className.replace(/progress-[a-z]+/g,'');
});​

http://jsfiddle.net/nVLzF/1/

于 2012-09-12T08:26:03.460 に答える
2

removeClass関数に複数のクラス名を渡すことができます。

$('#languageProgress').removeClass('progress-danger progress-warning');

http://jsfiddle.net/nygSe/1/

于 2012-09-12T08:01:45.980 に答える
1

すべてのクラス名の配列を取得して、それらをループすることができます。

var $progress = $('#progress');
var classList = $progress[0].className.split(/\s+/);
$.each(classList, function(index, item){
    if (item.indexof('progress-') == 0) {
       $progress.removeClass(item);
    }
});

単一の要素をチェックしたくない場合は、@ Alessandro Minoccheriの回答のセレクターを使用して、次のようにループすることができます.each()

var $progress = $("div[class^='progress-'],div[class*='progress-']");
$progress.removeClass(function(index, classList){
    var item = this;
    var removeClasses = [];
    $.each(classList.split(/\s+/), function(index, className){
        if (className.indexOf('progress-') === 0) {
            removeClasses.push(className);
        }
    });
    return removeClasses.join(' ');
});​
于 2012-09-12T08:06:28.397 に答える
-1
$("div[class^='progress'],div[class*='progress']").removeClass();

これにより、クラスが「progress」で始まるクラス要素と、「progress」で示されるクラスを含む要素が削除されます。

于 2012-09-12T08:04:52.983 に答える