2012-03-15 2 views
1

두 통화 : 내가 바로 live 이벤트 이후 아약스를 호출하는 경우 (그것이 있어야로)를 두 번 호출 아약스 사용 JQuery와

$('#add').live('click', function() { 

    $('.simplebox').slideUp(200, function() { 
     $('html, body').animate({scrollTop:140}, 350, function() { 
      $('#loading-add').slideDown(300, function() { 
       $.ajax({ 
        type: "POST", 
        url: "..", 
        data: getDataToPost(), 
        cache: false, 
        success: function(data){ 

         alert(data); 

         $('#loading-add').delay(1000).fadeOut(200, function() { 
          $('#successfull-add').fadeIn(200); 
         }); 

        } 
       }); 
      }); 
     }); 
    }); 

}) 

, 그것은 시간에 호출

$('#add').live('click', function() { 
       $.ajax({ 
        type: "POST", 
        url: "..", 
        data: getDataToPost(), 
        cache: false, 
        success: function(data){ 

         alert(data); 

         $('#loading-add').delay(1000).fadeOut(200, function() { 
          $('#successfull-add').fadeIn(200); 
         }); 

        } 
       }); 
}) 

그 이유는 무엇입니까? 정말 이상한 ..

감사합니다. queue()를 사용

+0

당신은 더 자세히 문제 좀 설명해 주시겠습니까? –

+0

나는 당신이 당신의 질문 중 일부를 중단했을지도 모른다고 생각합니다. 이것은 약간 불명확합니다. 문제를 더 잘 이해할 수 있도록 다른 것을 추가 할 수 있습니까? –

+1

[jQuery $ .animate() 여러 요소가 중복되지만 한번만 콜백을 실행] (http://stackoverflow.com/questions/8793246/jquery-animate-multiple-elements-but-only-fire-callback-once) - 문제는 각 요소에 대해'animate' 콜백이 한 번 호출된다는 것입니다.이 경우에는'html'과'body'입니다. 'body'만 사용하거나 그 질문에 대한 답을 사용하십시오. 문제는 다른 애니메이션 방법에도있을 수 있습니다. –

답변

0

시도 :

$('.simplebox').slideUp(200); 
$('.simplebox').queue(function() { 
    $('body').animate({scrollTop:140}, 350); 
    $('body').queue(function() { 
     $('#loading-add').slideDown(300); 
     $('#loading-add').queue(function() { 
      //ajax call 
     }); 
    }); 
}) 
+0

문제는'$ ('html, body'). animate (...)'... –

+0

'$ ('body')'이면 충분합니다. –