2012-07-22 3 views
1

내 문제 ... 모든 keydown 이벤트를 실행할 수 없습니다. 사용자가 검색에 내가 [ENTER]를 사용하고contenteditable div의 모든 keydown/up 이벤트를 실행합니다.

가와 [ESC]를 keyDown 이벤트/업데이트 정적 테이블 셀 및 동적 테이블 셀이 있습니다

일부 HTML 테이블에 데이터를 새로 고치거나 종료/새로 고침을 기반으로 채워 -term 입력

동적 테이블은 $ .each 루프에서 왔지만 div 구조는 정확히 동일합니다 (div ID는 고유합니다). 결과 테이블 셀은 두 경우 모두 ...

<td class="edit"><div contenteditable="true" id="XYZ">[value]</div></td> 

의를 keyDown 기능은 동일하다 ....

$(document).ready(function() { 

    $("#divA").keydown(function (e) { 
    if (e.keyCode == 13) { 
     e.preventDefault(); 
     // send data to server   
     // refresh stuff 
    } 
    if (e.keyCode == 27) { 
     // refresh stuff 
    }  
    }); 

    $("#divB").keydown(function (e) { 
    if (e.keyCode == 13) { 
     e.preventDefault(); 
     // send data to server 
     // refresh stuff   
    } 
    if (e.keyCode == 27) { 
     // refresh stuff 
    }  
    }); 

서버에 별도의 기능 게시 날짜가 동일합니다. 그리고 데이터베이스를 업데이 트하는 PHP도 동일합니다. 둘다 동일한 mysql 데이터 구조 double, yes null, zero default을 가지고 있습니다. divB에 데이터가 있고 alert($("#divB").text());은 ajax 업데이트에 사용될 값을 표시합니다. [ENTER (엔터)] 라인 휴식을 중지하고 코드를

divB에서

,를 keyDown를 실행를 keyDown

하지만 난 여기에 문제를 좁혀 때문에 그 어느 것도 중요하지 추측 ... 디바의

, [입력] 줄 바꿈을 멈추지 않고 코드가 실행되지 않습니다

유일한 차이점은 divA는 정적이며 divB는 javascript에서 생성된다는 것입니다. 어떻게 divB keydown 함수를 실행할 수 있습니까?

답변

3

div 중 일부는 동적이므로 keydown을 사용하여 이벤트를 바인딩 할 수 없습니다. 이 메소드는 페이지가로드 될 때만 기존 div에 바인딩합니다.

는 당신이 필요로하는 것은 jquery.on() 또는 jquery.live() (당신의 JQuery와 버전 지원이 더 나은 그것을 사용하는, 그래서 만약에이 최신 버전 인)를 사용하는 것입니다.

+0

완벽 매우 감사합니다! – Ben

관련 문제