2016-12-11 18 views
2

各チェックボックスをオンにすると、各ループの内部で処理されているAJAX要求を実行する必要があります。すべてのAJAXリクエストが完了したら、フォローアップ機能を実行する必要があります。AJAXで.each()を使用すると、wait untilループが実行されます。

チェックボックスの数は常に可変で、ボックスがチェックされている場合は、AJAXを実行する必要があります。

HTML:

<input type="checkbox" class="checkbox" val="1" /> 
<input type="checkbox" class="checkbox" val="2" /> 
<input type="checkbox" class="checkbox" val="3" /> 
<input type="checkbox" class="checkbox" val="4" /> 
<input type="checkbox" class="checkbox" val="5" /> 

<button id="btn1">Click Me</button> 

jQueryの(v2.1.4)

は、私は(この例では、 "すべての応答が受信された")最後のコールバックを遅らせるために何を使用することができ、すべてのまでAJAXリクエストは完了しましたか?

JSFiddle:https://jsfiddle.net/sjkhh43x/

答えて

1

$.getによって返された約束の配列を作成し、すべてが

$(document).on('click', '#btn1', function() { 
    var promises = $('.checkbox:checked').map(function() { 
    var $input = $(this) 
    return $.get('data.html', function(data) { 
     console.log('Response received: ' + $input.val()); 
    }); 
    }).get(); 

    $.when.apply(null, promises).done(function() { 
    console.log('all done') 
    }) 

}); 

DEMO

を解決したときにコードを実行する $.whenを使用
関連する問題