JQuery : DOM 요소를 생성 한 객체 찾기


0

저는 하루 종일이 작업을 해왔으므로 어떻게 작동 시킬지 알 수 없습니다. TD를 가진 테이블을 JQuery "getJSON"명령을 사용하여 데이터베이스에서 가져온 내용으로 채 웁니다. 나는 TD 엘레멘트를 더블 클릭 할 때 그 내용이 TD의 이전 내용의 기본값을 가진 INPUT 엘레멘트가되도록 이벤트 핸들러 셋업을 가지고있다.

입력 요소는과 같이 "입력"라는 이름의 자바 스크립트 객체의 내부에 생성 :이 모든 지금까지 노력하고 있습니다

var Input = function() { 
    var obj = this; 
    obj.docElement = $('<input/>').attr('type', 'text').val(obj.defaultValue); 
} 

. 내 문제는 사용자가 해당 필드 편집을 완료했다는 것을 나타 내기 위해 입력이 선택되어있는 동안 사용자가 RETURN 키를 누를 수있게하려는 것입니다. 나는 다음과 같은 것을 시도했다 :

이것은 처음 편집 할 때 잘 동작한다. 그러나 필드를 여러 번 편집하면 작업이 중지됩니다. 또한 무작위로 TD를 두 번 클릭하면 결국 끊어집니다. 나는 그것을 테스트하고 "바인딩"이 더 이상 존재하지 않는 것처럼 INPUT 요소가 모든 유형 이벤트 등록을 중단했음을 확인했습니다.

나는 많은 검색을했고, 입력 된 요소에 배치 된 일반 JQuery "bind"처리기가 ​​신뢰할 수 없다고 판단했습니다. 그러므로 내가 대신 사용하여 문서 객체에 이벤트 핸들러를 첨부하기로 결정 다음

$(document).bind('keydown', function(e) { 
    //do something 
} 

은 내가 (액션이에서 실행되는 대상 요소를 얻기 위해 "e.target"를 사용할 수 있습니다 알고이 작동 me, e.target은 INPUT 요소를 올바르게 참조합니다.)

제 질문은 처음부터 INPUT 요소를 만든 객체를 얻는 방법입니다. INPUT 요소를 만드는 데 사용 된 해당 "입력" 클래스 내에 포함 된 함수를 실행할 수 있어야합니다. "$ (document) .bind"함수 내에서이 함수를 호출해야합니다. 그래서 기본적으로 INPUT 요소의 부모/작성자 Input 개체를 가져올 수 있어야합니다.

내가 명확하게 설명하지 않은 내용이 있으면 알려 주시기 바랍니다. 이 문제에 도움을 주시면 대단히 감사하겠습니다! 나는 또한 대안 메서드 ("$ (document) .bind"를 사용하는 것 외에)에 대한 제안을 열어두고있다.

감사합니다. 내가 문제를 이해 생각

0

...

당신은 부모 문서 요소를 찾을 수 DOM을 통과 할 수 있지만, 그건 바로, 당신은하지 무슨 뜻? 요소에서 작동하는 논리 묶음이있는 상위 스크립트 요소가 필요합니다.

입력 요소가 생성 될 때 부모 클래스에 대한 일종의 참조를 제공하는 것이 가장 쉽다고 생각합니다. 이벤트 처리기에 전달하거나 전역 액세스 가능 위치 (예 : current_element_parent var)로 설정하십시오. .

  0

감사합니다. 대답을 읽은 후에 중첩 된 for-in 루프를 사용하여 내 개체 계층 구조를 통과하고 전달 된 e.target 요소에 대해 각 입력 개체의 문서 요소를 검사하기로 결정했습니다.어쩌면 가장 효율적인 방법은 아니지만 지금은 모두 작동합니다! 다시 한 번 감사드립니다! 22 feb. 092009-02-22 06:04:01


0

나는 동의한다. 부모에게 다시 참조하는 INPUT 요소에 사용자 지정 특성을 추가하거나 동적으로 생성 된 INPUT 요소를 만든 부모와 매핑하는 메모리에지도를 유지할 수 있습니다. Return 키를 트랩 할 때 맵에서 관계를 제거하면 사용자가 다시 클릭하면 다시 추가 할 수 있습니다.