2011-11-12 33 views
0

私のページには2つのボタン:#signin and #signupがあります。それらのための関数を以下のコードのようにクリックします。問題は、それらを連続してクリックすると、関数の実行の間に大きな遅延が現れることです。同時にそれらを実行する方法はありますか?Jquery関数実行間の遅延

var counter = 0,signin = $("#signin"), signup = $("#signup"), signin_f = $("#signin_form"), holder = $("#holder"), signup_f = $("#signup_form"), f_container = $("#form_container"); 
$(".button").click(function() { 
     if (counter === 0) { 
      signin.removeClass('default_radius').addClass('right_radius'); 
      signup.removeClass('default_radius').addClass('left_radius'); 
      $("#first").animate({ 
       marginTop: "-=150px", 
      }, 500); 
     } 

    }); 

    $("#signup").click(function() { 
     if (counter === 0) { 
      holder.addClass('red_border').height(275).slideDown("slow"); 
      f_container.show(); 
      signup_f.fadeIn(1200); 
     } else { 
      holder.animate({height:"275"},1000).switchClass("green_border", "red_border", 1000); 
      signin_f.fadeOut(500);  
      f_container.animate({height:"260"},1000); 
      signup_f.fadeIn(1000); 
     } 
     counter++; 
    }); 

    $("#signin").click(function() { 
     if (counter === 0) { 
      holder.addClass('green_border').height(125).slideDown("slow"); 
      f_container.show(); 
      signin_f.fadeIn(1200); 
     } else { 
      holder.animate({height:"125"},1000).switchClass("red_border", "green_border", 500); 
      signup_f.fadeOut(500);       
      f_container.animate({height:"110"},1000);   
      signin_f.fadeIn(1200); 

     } 

     counter++; 
    }); 

ここでのコードはhttp://tural.no-ip.orgです。高速で連続的にボタンをクリックすると、私が話していることが分かります。外部jsファイル:first.js。

+0

私は自動的にサイズを変更するCSSに依存します。 – Blender

+0

もCSSで試しました。アニメーションは1秒から2秒間停止しますが、CSS自体は「再設定中」 –

答えて

3

別のfade機能を追加する前に.stop()メソッドを使用してください。使用法:

signin_f.stop(true, true).fadeIn(1200); 
//First argument true = Remove queued animations as well 
//Second argument true = Immediately finish the current animation 
+0

は成功しませんでした。 http://tural.no-ip.org。高速で連続的にボタンをクリックすると、私が話していることが分かります。外部jsファイル:first.js。 –

+0

'animate()'の前に '.stop(true、true)'を追加してください。代わりに、各イベントリスナの先頭に 'signin_f.stop(true、true)'を追加することもできます。 –

関連する問題