이벤트 리스너 한 번만 실행하기
본문
둘 이상의 이벤트에 이벤트 리스너를 등록할 경우, 한 번만 실행했으면 해서
검색을 해 보니
https://stackoverflow.com/questions/1115000/javascript-stop-additional-event-listeners
여기 답변을 참고해서 다음처럼 했는데,
keypress 경우는 alert()가 두 번씩 나오네요.
<script>
$(document).ready(function(){
$('.rate_e').on( 'keypress change', function( e){
if( e.cancel) { return; }
alert( 'here');
e.cancel=true;
});
});
</script>
디버깅을 해 보니, 첫째와 둘째의 e(이벤트 오브젝트 파리미터)가 같은 오브젝트가 아니어서
위 프로그램이 제대로 실행되지 않은데
좋은 개선 방법이 있을까요?
답변 2
e.target 을 확인하시면 되겠네요
불린변수를 하나 만들어서
문서 최초에는 true 를 주고
변수가 true 일 때만 이벤트를 실행하게 구문을 짠 다음에 처음 이벤트 실행시 변수값으로 false 를 주거나 아님 아예 변수를 delete 시키거나 하면 되지 않을까요?
답변을 작성하시기 전에 로그인 해주세요.