2011-01-17 3 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]ple.com"); 
    } 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

내가 바꿀 것 코드에서 두 가지 주요 가지가 있습니다

첫째 : dataString = 'mail='+email;이이 요청 매개 변수를 설정하는 가장 좋은 방법이 아니다는. email에는 HTTP 요청시 인코딩해야하는 문자가 쉽게 포함될 수 있습니다. 이것은 HTTP 요청에 특별한 의미를 갖는 문자를 인코딩합니다

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

하고, 코드를 더 신뢰할 수 있도록해야한다 : 당신은 jQuery.param를 사용하여이 작업을 수행 할 수 있습니다.

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

둘째, 당신은 기본 작업 발생하는을 피하기 위해 return false을 사용하고 있습니다 : 또는 약간 더 빨리, 당신은 기본 JS 기능 encodeURIComponent를 사용할 수 있습니다. 나는 event.preventDefault을 선호한다. 이것은 첫째로 문체 적입니다 - 그것은 당신이 성취하고자하는 것을 더 분명하게합니다; 둘째, 처리기 함수의 시작 부분에 넣을 수 있습니다. 따라서 어떤 이유로 든 나머지 기능에 오류가 있으면 기본 조치가 계속 수행되지 않습니다.

선택기와 관련하여 얻을 수있는 몇 가지 개선 사항이 있지만 HTML을 보지 않고도 말할 수는 없습니다.

+0

+1 모든 포인트가 유효하며 불필요한 미세 최적화 팁이 없습니다. – galambalazs

+0

그는'$ ('form_id')를 사용합니다. serialize()'? – ifaour

+0

@ifaour 인코딩하려는 유일한 것이 전자 메일 주소이고 양식에 더 많은 것이있는 경우 성능 회귀가 될 수 있습니다. – lonesomeday