2014-09-30 2 views
-1

나는 .live()을 읽었으며 대신 .on을 사용해야한다고 읽었습니다. 그러나 .on은 DOM에 추가 된 요소에 대해 작동하지 않는 것 같습니다.동적으로 추가 된 .on() 사용 문제

내 스크립트는 임의의 수의 텍스트 상자 (input type="text")가있는 테이블을 추가하고 해당 텍스트 상자의 내용이 변경되면 스크립트를 실행하려고합니다.

내 코드의 일부입니다. vendorsPopUp은 내 테이블을 포함하는 div를 참조합니다.

$('input', vendorsPopUp).on('change', function (e) { 
    alert($(this).attr('class')); 
}); 

그러나 텍스트 상자의 내용이 변경되면이 코드는 실행되지 않습니다.

+0

()처럼해야한다. on()은 바인딩 할 때 발견 된 몇 가지 요소뿐만 아니라 이벤트에 대한 하위 요소를 감시하는 상위 컨테이너를 사용합니다. 여분의 선택기 인수가 필요한 이유입니다. 지금 레거시 모드에서 on()을 사용합니다. – dandavis

+1

다른 많은 질문이 중복되었습니다. 나는 지금 사본을 찾을 것입니다. – jfriend00

+1

@dandavis는 직접 바인딩 모드에서 레거시 모드가 아닙니다. 요소에 직접 바인딩하는 것에 대한 유산은 없습니다. –

답변

0

그것은 더 하위 요소가없는 테이블이나 신체 또는 사업부하지 입력에 당신이 부르는

$(vendorsPopUp).on('change', 'input', function (e) { 
    alert($(this).attr('class')); 
}); 
+1

이 질문에 대한 답은 명확하고 간결하며 필요한 코드가 있습니다. 질문이 중복으로 끝나면 괜찮습니다.하지만 어떤 사람들은 왜 하향 투표를하는 것이 옳은지, 특히 의견없이 그렇게하는 사람들을 알아라. –

관련 문제