2012-03-15 16 views
1

2つのコール:私はすぐにliveイベントの後にアヤックスにコールした場合(それがあるべきよう)ダブル呼び出しAJAX使用して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); 
         }); 

        } 
       }); 
}) 

なぜそれが起こるか考えていますか?本当に奇妙な..

ありがとう。

+0

あなたは、より詳細にあなたの問題をしてください説明してもらえますか? –

+0

あなたの質問のいくつかを中止したかもしれないと思いますが、これは少し不明です。問題をよりよく理解するために何かを追加できますか? –

+1

[jQuery $ .animate()複数の要素が重複していますが、コールバックは1回だけ発生します](http://stackoverflow.com/questions/8793246/jquery-animate-multiple-elements-but-only-fire-callback-once) - 問題は、 'animate'コールバックが要素ごとに1回呼び出されることです。この場合は' html'と 'body'です。 'body'またはその質問に対する答えだけを使用してください。この問題は他のアニメーションメソッドでも起こる可能性があります。 –

答えて

0

queue()を使用してみてください:

$('.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')ですが、アニメーション(...)' ... –

+0

'$( 'body')'で十分です。 –

関連する問題