2011-01-17 17 views
0

挨拶、最適化jQueryのコード

ちょうどjQueryを使っていくつかのものを構築し、すべてが完璧に動作します(!)が、私はできるだけoptimzedとしてそれがしたい..小さなものを変更私は自分のコードに行うことができますか?

$(document).ready(function() { 

// hide the indicator, we use it later 
$(".indicator").hide(); 

// start the animation of the progressbar 
$(".fill").animate({ width: "50px",}, 4000, function() { $(".indicator").effect("pulsate", { times:999 }, 2000);}); 

// notify-me ajax function 
$(".btn-submit").click(function() { 

    // get the variable email and put it in a new variable 
    var email = $("input#mail").val(); 
    var dataString = 'mail='+email; 

    $.ajax({ 
    type: "POST", 
    url: "/mail.php", 
    data: dataString, 
    dataType: "json", 
    success: function(msg){ 

    // JSON return, lets do some magic 
    if(msg.status == "ok") { 
    $("#response-box").fadeIn("slow").delay(2000).fadeOut("slow"); 
    $("#fade").fadeIn("slow").delay(2000).fadeOut("slow"); 
    $("#response-box .inner").html("<h1>Thank you.</h1>We'll keep in touch!"); 
    $("#mail").val("e.g. [email protected]"); 
    } else { 
    $("#response-box").fadeIn("slow").delay(2000).fadeOut("slow"); 
    $("#fade").fadeIn("slow").delay(2000).fadeOut("slow"); 
    $("#response-box .inner").html("<h1>Oops.</h1>Please try again!"); 
    } 
    } 
    }); 

    //make sure the form doesn't post 
    return false; 

}); 

}); 

答えて

1

私は変化するであろうあなたのコード内の2つの主要なものがあります。

まず:dataString = 'mail='+email;は、これは、このリクエストパラメータを設定するための最良の方法ではありません。 emailには、HTTPリクエストに入れるときにエンコードする文字を簡単に含めることができます。これは、HTTPリクエストに特別な意味を持つ文字をエンコードします

dataString = jQuery.param({mail: email}); 

、およびコードの信頼性を高める必要があります:あなたはjQuery.paramを使用してこれを行うことができます。

datastring = 'mail=' + encodeURIComponent(email); 

第二には、デフォルトのアクション破壊に対する避けるためにreturn falseを使用している:また、とわずかに速く、あなたはネイティブJS機能encodeURIComponentを使用することができます。私はevent.preventDefaultを使用することを好む。これは第一に文体的です - それはあなたが達成しようとしていることをより明確にします。第2に、ハンドラ関数の先頭に置くことができます。したがって、何らかの理由で残りの関数にエラーがある場合、デフォルトのアクションはまだ防止されます。

セレクタの点では他にも改善が見られるかもしれませんが、HTMLを見ていなくても分かりません。

+0

+1すべての点が有効です。不要なマイクロ最適化のヒントはありません。 – galambalazs

+0

彼は '$( 'form_id')。serialize()'を使うだけですか? – ifaour

+0

@ifaourあなたがエンコードしたい唯一のものが電子メールアドレスであり、フォームにもっと多くのものがあった場合、それはパフォーマンスの回帰となる可能性があります。 – lonesomeday