3

重複の可能性:
jquery イベント ハンドラー: div が表示/非表示になる

一部の要素が非表示になり、js によって表示されるように設定された後にトリガーするようにイベントを設定できますか?

また、js が要素にクラスを追加したかどうかを検出できますか?

私はjQueryで作業しています

4

3 に答える 3

2

はい。イベントを介してクラスの追加と削除を追跡できます。

これは、イベントを使用して追跡できます。このイベントは、名前が示すように、DOM内の要素の属性が変更されるたびDOMAttrModified発生します。

この特定のケースでは、追跡しclassたい要素の属性の変更を追跡します。

デモ: http: //jsfiddle.net/techfoobar/dnRUu/2/

デモでは、[クラスの切り替え]ボタンをクリックして、最初のDIVにクラスを追加します。取得したアラートは、DOMAttrModifiedイベントによって発生します。

詳細はこちら:

https://developer.mozilla.org/en-US/docs/DOM/DOM_event_reference?redirectlocale=en-US&redirectslug=DOM_Events

http://www.w3.org/TR/DOM-Level-3-Events/#events-MutationEvent

免責事項:Mozilla Firefoxでのみテストされています!

于 2012-09-06T13:10:13.453 に答える
1

たぶんあなたはそのようなイベントを処理するためにintervalを使うことができます:

function checkIt () {
    if ($('#Element').length > 0) {
        if($('#Element').is(':hidden') == true) {
           // add class name
            alert('Element was hidden');
            $('#Element').removeClass('hidden').addClass('visible');

            // or toggle class name
            //$('#Element').toggleClass('className');

            // or remove class name
            //$('#Element').removeClass('className');

            // if you want to clear the interval
            //clearInterval(listenerID);
        }
    }
}

var listenerID;
$(function(){
    listenerID = setInterval(checkIt, 500);
});

http://jsfiddle.net/KFGrL/2/

要素にクラス名があるかどうかを確認するには:

if ($('#Element').hasClass('className')) {
    // your code
}
于 2012-09-06T13:08:43.653 に答える
0

あなたが購読できるようなイベントはありません。あなたができる最善のことは、定期的に独自の関数を実行して、気になる変更をチェックすることです..

于 2012-09-06T12:39:11.610 に答える