2013-05-05 3 views
3

По какой-то причине мой код ajaxStop стреляет дважды прямо сейчас, и мне нужно ограничить его до одного раза.Получение jquery ajaxStop только для запуска только один раз

$('.submit').bind('click', function(e) { 

$("#fileupload").ajaxForm({ 
     target: '#status' 
}).submit(); 


$(document).ajaxStop(function() { 
     var mysrc = $("#status").find('img').attr("src"); 
     $(".empty:first").removeClass("empty").removeClass("ui-state-default").addClass("ui-state").append('<img src="'+mysrc+'" width="45" height="60" class="expand"/>'); 
    });  

}); 
+0

ajaxStop остановил запросы ajax, но когда я снова запустил клик, я снова получаю два элемента. – Blynn

ответ

8

попробовать использовать .one(), как:

$(document).one("ajaxStop", function() { 
    var mysrc = $("#status").find('img').attr("src"); 
    $(".empty:first").removeClass("empty").removeClass("ui-state-default").addClass("ui-state").append('<img src="'+mysrc+'" width="45" height="60" class="expand"/>'); 
}); 
+1

Это действительно ограничивает его стрельбой один раз, однако он срабатывает до того, как закончится все призыв ajax. Для меня, во всяком случае ... –

+1

Это вызвано еще до того, как делаются вызовы, поэтому это неправильный ответ. –

0

Mine выполнял в два раза, а также. Однако использование .one означало, что оно срабатывало только во время Итерации FIRST, которая не была завершена. Вот что я в конечном итоге использовал, и, похоже, он работает по своему желанию.

var ajaxCount = 0; 

$(document).ajaxStop(function() { 
    ajaxCount += 1; 
    if (ajaxCount == 2) { 
     $('.fieldLoading').hide(); 
     $('.fieldValue').show(); 
    } 
}); 
Смежные вопросы