2012-11-21 2 views
0

동적 인 용도의 양식 필드 중계기를 작성했지만 jQuery 클릭 이벤트 기능에 어려움이 있습니다.jQuery는 동적 내용보다 먼저 생성 된 내용에 대해 여러 이벤트를 발생시킵니다.

당신은 볼 수 있습니다 내 code here-http://leading-people.com/resources/form/

나는 자신의 부모에 한 번만 TD 클릭하면 입력 필드를 복제하려는. 이 경우에는 이미 표시된 입력 필드에 대해서만 작동하고 동적으로 생성 된 필드에는 클릭 이벤트의 기능을 할당합니다.

문제는 일단 동적 필드를 생성 할 때, 완벽하게 복제를 생성한다는 것이다 같은 동적 생성 된 입력 필드로 발생하지만, I합니다 (노인 입력 필드를 누를 않을 때 이미 초기에 산란되는 단계) 그것은 여러 번 복제합니다.

많은 다른 방법으로이 질문과 유사하게 나열했지만 시도 할 수는 없습니다. 비슷한 질문들 그래서 나는 이것들을 발견했지만 전혀 도움이되지 못했습니다. 여기

답변

0

당신은 갈 여기

$(document).ready(function(){  
    $("table").on("click","input",function(){ 
     var dd = new Date(), 
      ddClass= dd.getDate()+"-"+dd.getSeconds(); 

     $(this).clone().attr("class",ddClass).appendTo($(this).parent()); 
    });   
});​ 

Jsfiddle : 우리가 모든 클릭 이벤트를 수신하기 위해 테이블을 사용하여이 코드에서 http://jsfiddle.net/CLyRc/4

내부 입력 ds를 클릭 한 다음 해당 클릭 된 입력을 복제하여 상위 (이 경우 <td> 태그)에 추가하십시오.

코드에서 모든 입력 필드에 이벤트 리스너를 반복적으로 추가하는 것처럼 보였습니다.이 예제에서는 이벤트 위임을 사용하여 동적으로 추가 된 입력 필드에서 한 번만 이벤트를 수신합니다.

+0

놀랍게도 저에게 효과적입니다. :) 하지만 한 가지; 새로 생성 된 콘텐츠, 즉이 경우 '입력'태그에 대해 '클릭 이벤트'가 실행되는 방식 –

+0

@Hammad A. 이벤트 위임을 통해 작동합니다. 각각의 개별적인 '' 태그에 이벤트 리스너를 부착하는 대신 동적으로 추가 된 각각의' '에 대해해야 할 일은 리스너를 테이블에 추가하는 것입니다. ''필드를 클릭하면 이벤트가 부모 요소를 통해 DOM 트리의 맨 위로 전달됩니다. 전달됨에 따라 '

'을지나 이벤트가 트리거됩니다. ''이 동적으로 추가되었는지 여부는 중요하지 않습니다. – mibbler

관련 문제