2012-06-02 2 views
12

Ajax를 사용하여 양식을로드하는 Jquery Mobile 셸 페이지가 있습니다. 이 양식에는 몇 개의 체크 박스가 있는데, 나는 이것을 묶어야한다.Ajax를 통해 가져온 요소에 Jquery document.on()을 사용하는 방법은 무엇입니까?

이상하게도, 나는 그것이과 같이 버튼을 직접 리스너를 설정하는 작업을 얻을 수 있습니다 :

$('input[name="ohneiln"]').on('change', function() { 
    alert("hello"); 
    }); 

하지만, 청취자를 결코 $(document)에 리스너를 설정하지 않으며 checkbox에 위임려고 할 때 화재 :

$(document).on('change', 'input[name="ohneiln"]', function() { 
    alert("hello"); 
}); 

질문 : LO 인 "동적"요소를 결합하는 이벤트를 설정하는 올바른 방법이 무엇
Ajax를 통해 $(document).on()을 사용하여 추가 되었습니까? change 이벤트에서이 기능을 사용할 수 없습니까? 아니면 문제가있는 이유는 무엇입니까?

도움 주셔서 감사합니다.

+1

두 번째 구문은 잘 보인다 동적 요소에 대한 작업을해야의 문서를 읽고, 문제는 아마도 다른 곳이다. –

+1

잘 작동합니다. http://jsfiddle.net/7rDDA/ – Esailija

+0

@Esailija -하지만 페이지가로드 될 때 입력 내용이 있습니다. 내 물건이 아니야, 사용자가 물건을 먹은 후에 Ajax를 통해 가져온다. – frequent

답변

11

사용 방법에 따라 .on() 방법의 작동 방식이 변경됩니다. 첫 번째 예제에서 .on() 메서드는 bind과 유사하게 동작하며 이미 존재하는 요소에서만 작동합니다.

두 번째 예는 여러 가지면에서 .live() 또는 delegate()처럼 동작합니다. 나중에 추가되는 요소에 대해서도 작동합니다.

는 자세한 설명 http://api.jquery.com/on/

+0

링크 및 설명 주셔서 감사합니다. 첫 번째 버전을 고수하고있는 것 같습니다. – frequent

+0

첫 번째 예제와 두 번째 예제가 섞여 있다고 생각합니다. 첫 번째는 "직접"이고, 두 번째는 "위임 됨"입니다. –

+0

나는 당신의 오른쪽 감사합니다 로켓 :) – codaniel

관련 문제