2017-08-03 32 views
0

私はselectWithCircle関数を使用してjQueryで要素を選択し、 'アクティブ'クラスを追加しています。は、DOM操作(jQueryなど)を非同期ですか?

var selectWithCircle = function(el){ 
    if(!el.hasClass('active')){ 
     el.addClass('active'); 
    } 
} 

その要素が「アクティブ」クラスを持っている場合、私は彼らと何かをする必要があり、同じ構成要素に別の選択をすることによって

jQuery('label.ico-btn').click(function(event){ 
    var $this = jQuery(this); 

    selectWithCircle($this); 

    jQuery('label').each(function(index,item){//am I sure that this runs after selectWithCircle()? 
     if(jQuery(item).hasClass('active')){ 
     //do something 
     } 
    }); 
}); 

がいることを確認してくださいIアムとき、私はjQueryをループ(」 label ')selection関数selectWithCircleが機能しましたか?
より一般的には、jQueryの選択操作は同期の方法で実行されますか?

+0

jQuery( 'label')を置くことができます。 selectWithCircleのeach()コードですが、これは単なる例です。 – Ferex

+0

ドーム操作が同期 – user7951676

答えて

1

入力値の設定は同期しています。更新された値、クロスブラウザを確実に取得します。要素の挿入、削除、移動などの他のDOM操作は、JavaScriptコードが完了するまでユーザーが結果を見ることはできませんが、ブラウザはスレッドを使用して表示を再描画します。

そして、あなたのコードされ

+0

純粋なJavaScriptで行うとどうなりますか?私は関数内のコードを意味します。 – Ferex

+0

Javascriptも同期しています – Manoj

2

JQueryは同期スレッドであり、シングルスレッドです。コードを実行すると、もう一方はコードが成功するのを待ちます。

JQueryはAjax呼び出しでのみ非同期であり、現在実行中の他のコードを中断しません。 async: falseオプションを除く

1

正常に動作しますはい、jQuery選択や装飾はsynchronouslyが行われます。 DOM操作もすべてsynchronousだと感じるかもしれませんが、

関連する問題