特定の文字列を持つクラスを削除する必要があります。
私は以下を試しましたが、うまくいきません。
<body class="myClass someStringAndOtherString"></body>
$('body').removeClass('class', ':contains("someString")');
何か案は?
特定の文字列を持つクラスを削除する必要があります。
私は以下を試しましたが、うまくいきません。
<body class="myClass someStringAndOtherString"></body>
$('body').removeClass('class', ':contains("someString")');
何か案は?
クラス'someString'を削除するには、次のようにします。
$('body').removeClass('someString');
'someString'クラスが見つかった場合にすべてのクラスを削除するには:
$('body').hasClass('someString').removeAttr('class');
文字列を含むクラスを削除するには:
// test if someString is present
if( $('body').attr('class').indexOf('someString') != -1){
// get classes as array
var classes = $('body').attr('class').split(' ');
// loop over array
for(i=0;i< classes.length; i++){
// is this class a class that contains someString?
if(classes[i].indexOf('someString') != -1){
// remove said class
$('body').removeClass(classes[i]);
}
}
}
またはここでは関数として:
function removeClassesThatContainString(selector, someString){
var $selector = $(selector),
classAttr = $selector.attr('class');
if(classAttr.indexOf(someString) != -1){
var classes = classAttr.split(' ');
for(i=0; i<classes.length; i++){
if(classes[i].indexOf(someString) != -1){
$selector.removeClass(classes[i]);
}
}
}
}
次に、次のようになります。
removeClassesThatContainString('body', 'someString');
$('body').removeClass('someString');
クラスが複数の場所に存在する場合:
$('.someString').removeClass('someString');
新しい質問への回答を編集します。
$('[class*="someString"]').each(function ()
var classes = $(this).attr('class').split(' ');
for(var i = 0; i < classes.length; ++i) {
if(classes.indexOf('someString') >= 0) {
$(this).removeClass('classes[i]);
}
}
});
このコードを試すことができます。
$('body').removeClass(function(i,c){var classes=c.split(' ');for(var i=0;i<classes.length;i++){if(/someString/.test(classes[i]))return classes[i];}});
someStringAndOtherString、thissomeString、someStringなどのクラスが削除されます。
複数のクラスの場合、一致するクラスのみが削除されるため、この例では、「myClass」クラスはそのままになります。