0

特定のブロック要素から CSS クラスを削除する関数があります。ブロックに別のクラスを追加する前に、ブロックに CSS クラスがなくなったことをライブでチェックするにはどうすればよいですか?

これは私のコードです:

$('#back_button_recipes').on('DOMSubtreeModified',function(){
    if ($(this).attr('class').length <= 0){
        $(this).addClass('main_menu')
    }
});
4

3 に答える 3

0
$('#back_button_recipes').on('DOMSubtreeModified',function(){
    if ($('.className').length > 0){
        $(this).addClass("main_menu");
    }
});​
于 2012-08-27T13:56:32.077 に答える
0

$(this).attr('class') の呼び出しは配列を返さないため、長さのチェックは機能しません。クラスがない場合、attr は undefined を返すので、falsy をチェックしてください:

var classes = $(this).attr('class');
if (!classes) {
  ...
}

jQuery オンライン attr ドキュメントから

jQuery 1.6 以降、.attr() メソッドは、設定されていない属性に対して undefined を返します。

于 2012-08-27T13:38:37.937 に答える
0

JavaScript でこの検査を行います。

$('#back_button_recipes').on('DOMSubtreeModified',function(){
    if (!this.className.length > 0){
        this.className += 'main_menu';
    }
});​

JSFiddle
http://jsfiddle.net/2pW3v/2/

于 2012-08-27T13:43:59.987 に答える