2011-08-25 2 views
1

이벤트를 두 번 등록하는 키 누르기에 문제가 있습니다. HTML 요소가 동적으로로드되고 자주 변경되기 때문에 현재 .live를 사용하고 있습니다..live() 키 누르기 두 번 입력

keypress뿐만 아니라 keydown을 사용해 보았지만 그 결과도 마찬가지였습니다. 누구든지 두 번 등록하게하는 원인을 발견 할 수 있습니까?

자바 스크립트 :

$(".class3").live('keypress', function (e) { 
    if (e.keyCode == 13){ 
     alert("Enter key pressed"); 
    } 
}); 

html로는 :

<dd class="class1 class2"> 
    <input type="text" class="class2 class3" placeholder="Type Name Here"> 
</dd> 
+0

같은 코드가 여기에 등록 된 것 같습니다. 언급 할 내용이 있습니까? – Usman

답변

2

현재 올바르게 코드를 붙여하지 않았습니다. 당신이 할하려고하는 것은 이것이다 : 당신의 keypress 이벤트가 버블 링 때문에

$(".class2").live('keypress', function (e) { 
    if (e.keyCode == 13){ 
     alert("Enter key pressed"); 
    } 
}); 

http://jsfiddle.net/pnNAM/

이 일어나고있는 이유가있다. 따라서 input에 대해 한 번, 다시 dd에 대해 다시 발생합니다.

실제로 keypress의 내용을 $(".class3")에 수신하면 1 번만 실행됩니다.

+0

왜 downvote? 그것은 합리적인 가정입니다. – HyderA

+0

OP의 코드는 [JSFiddle] (http://jsfiddle.net/pnNAM/2/)에서 잘 작동합니다./Chrome 13 – HyderA

+0

놀랍게도 실제로 맞습니다! 내가 그걸 알아 차리지 못했다니 믿을 수가 없어. 고맙습니다. – tgrosinger