9

私は自分のページで何かをするためにdocument.readyイベントを待っています。

残念ながら、私が変更できない他のスクリプトは、スクリプトが呼び出された後はまだその魔法を働かせていません。したがって、クラスがDOMにまだ存在しないため、クラス名でのjqueryの選択は失敗します。

これが、要素が特定のクラスを取得するまでリッスンし、それを使って何かを実行するように関数に指示したい理由です。

どうすればこれを達成できますか?

4

3 に答える 3

15

このようなもの(疑似コード):

var timer = setInterval(function() {
   if (element.className=='someclass') {
       //run some other function 
       goDoMyStuff();
       clearInterval(timer);
   }
}, 200);

または挿入される要素をリッスンします。

function flagInsertedElement(event) {
   var el=event.target;
}
document.addEventListener('DOMNodeInserted', flagInsertedElement, false);

jQuery のバージョン:

$(document).on('DOMNodeInserted', function(e) {
    if (e.target.className=='someclass') { 
        goDoMyStuff();
    }
});

liveQueryプラグインもあります。

$("#future_element").livequery(function(){
    //element created
});

または、これが通常のイベント ハンドラーの場合は、jQuery の on(); でイベントを委任します。

于 2012-04-26T13:52:23.400 に答える
3

クラスを追加すると、何らかのイベントをトリガーできます。

例:

$('#ele').addClass('theClass');
$(document).trigger('classGiven')


$(document).bind('classGiven',function(){
    //do what you need
});
于 2012-04-26T13:55:09.713 に答える
0

質問が間違っていたら申し訳ありませんが、 document.ready でこのように単純なことをしないのはなぜですか? :

$("#myelement").addClass('myclass');

if($("#myelement").hasClass('myclass')) {
    alert('do stuff here');
}
于 2012-04-26T13:57:36.010 に答える