次のことを試すことができますが、クラスがHTMLソースに表示される順序と同じでない場合があります。
$('#thisdiv').attr('class', function(i, v)
{
var classes = v.split(' '),
position = $.inArray('class3', classes);
return classes.slice(0, position + 1).join(' ');
});
これがフィドルです:http://jsfiddle.net/FNUK2/
より簡潔な方法は、文字列自体をスライスすることです。
$('#thisdiv').attr('class', function(i, v)
{
return v.substr(0, v.indexOf('class3') + 6);
});
しかし、配列の操作は簡単だと思います。
jQueryチェーンで使用する場合は、最初にjQueryのプロトタイプに追加する必要があります。
$.fn.removeClassesAfter = function(className)
{
return this.each(function()
{
$(this).attr('class', function(i, v)
{
var classes = v.split(' '),
position = $.inArray(className, classes);
return position == -1 ? v : classes.slice(0, position + 1).join(' ');
});
});
};
これがフィドルです:http://jsfiddle.net/FNUK2/11/