2012-01-26 22 views
6

設定を初期化するためにページ上で複数のアクションを実行する必要がある状況があります。率直に言って、私はそれを開始する場所を見つけるのに苦労しているので、まだコードはありません。ここでjQuery:.click()イベントのトリガー

は、私が何をしたいです:

jQuery(document).ready(function($) { 

    $('#element-one').trigger('click'); 
    // wait for the first trigger event to complete (it loads ajax content into a div tag) 
    // then move on to this one... 
    $('#element-two').trigger('click'); 
    // then move on to this one... 
    $('#element-three').trigger('click'); 
    // then move on to this one... 
    $('#element-four').trigger('click'); 
    // then finally move on to the last one 
    $('#element-five').trigger('click'); 

}); 

これが達成される方法は?あなたは、繰延オブジェクトを使用するAJAX成功コールバックでそれを解決し、あなたがこのようなチェーンコードを(私がテストしていない)

$.when(
    $('#element-one').triggerHandler('click') /* asynchronous task */ 
).done(function() { 
    $('#element-two').triggerHandler('click') /* synchronous task */ 
    ... 
    $('#element-five').triggerHandler('click') /* synchronous task */ 
}) 

http://api.jquery.com/category/deferred-object/からだろうので、約束を返すことができ、あなたの最初のハンドラ内

+0

AJAXコールバックの中で他のトリガーを呼び出すと考えましたか? – Corbin

+2

クリックイベントで呼び出されているすべての関数を呼び出す、ページのロード後に呼び出すInit()関数を作成しないでください。 – RandomWebGuy

答えて

10

jQuery.Deferred()は、バージョン1.5で導入され、コールバックキューに複数のコールバックを登録するコールバックキューを起動し、任意の同期または非同期関数の成功または失敗の状態を中継することができる連鎖可能ユーティリティ・オブジェクトです。

注:ちょうどあなたがあなたのハンドラを添付先の要素に依存しないようにhttp://api.jquery.com/triggerHandler/:私はtriggerHandle()代わりのtrigger()を使用。 trigger()も必要に応じて使用してください

関連する問題