2017-07-26 7 views
2

メインページを読み込んだ後にCSSクラスを動的に追加するhtml要素があります。この要素に追加されたクラスがあるかどうかを検出するためにJQueryを試してみると、hasClassメソッドはfalseを返します。これは要素が動的に追加されたためです。 動的に追加されたCSSクラスを検出するにはどうすればいいですか

私のコードは$(document).ready(function() {});の中に挿入されています。

Javascriptを:

!$('#travel-1_1_').hasClass('complete'); 

HTML:

<rect id="travel-1_1_" width="64" height="12.6" y="28.5" x="48" class="complete"></rect> 
+3

javascriptのIDは '#travel-2_1_'ですが、HTMLのIDは'#travel-1_1_'です –

+0

詳細です:)私は質問を更新しました – KubiRoazhon

+1

あなたのスクリプトが実行された後に**チャンスは要素であり、そして/またはクラスが追加されます**。 – DarthJDG

答えて

0

あなたはそれだけで実行されることを確認するためにクラスを設定し、同じ場所にそのチェックを行う必要がありますその後

0

あなたはクラスが存在するかどうかチェックしていますか?

this答えによれば、$(document).ready()の機能の中でそれをチェックするだけで済みます。

2

ページが読み込まれた後、一定の間隔で関数を実行する必要があります。ここに1つのオプションがあります:

function fn60sec() { 
// runs every 60 sec and runs on init. 
$('#travel-1_1_').hasClass('complete'); 
} 
fn60sec(); 
setInterval(fn60sec, 60*1000); 
+1

少なくとも、条件が満たされたときに間隔を削除することができます。 –

0

私が最初に提案したのは、クラスを追加するときに必要な機能を呼び出すことでした。クラスを追加するコードを制御しない場合は、インターバルリスナーを設定するのが最善の方法だと思います。

var classListener = setInterval(function(){ 
    if($('#travel-1_1_').hasClass('complete')){ 
     clearInterval(classListener); 
     //Do your work here or 
     doWorkFunctionCall(); 
    } 
}, 1000); 

間隔の単位はミリ秒であり、毎秒実行されます。チェックする前に何秒待つかを長くするだけで時間がかかります。このソリューションの利点は、要素がクラスを持つことがわかると実行を停止することです。

関連する問題