$(document).ready(function() { $('#foo').bind('click', function() { doSomething(); }); }); var doSomething = function(){ $('#foo').unbind('click'); $.ajax({ type: "POST", url: "some.aspx" }).done(function() { $('#foo').bind('click', function() { doSomething(); }); }); }
위처럼 jQuery.ready()에 클릭이벤트를 바인드시켜두고, 한번 클릭시 unbind() 후 ajax 요청이 끝나면(done event) 다시 bind 시키는 방법이다.
jQuery.ajax 옵션에 async: false로 주는 방법도 있으나 이는 동기식 호출이라 서버에서 처리가 오래 걸릴 경우 좋지 않다.
[출처] 네이버 블로그 http://blog.naver.com/ponin/70155062648