2009-05-02 5 views
17

저는 JQuery를 처음 사용합니다. jquery에 새 요소가 표시되지 않습니다.

나는 간단한 문제가 :

$(document).ready(function() { 

    $("#instrument").change(function() { 
     $("#tunings").html("<select id=\"TuningSelector>\"[..]</div>"); 
    }); 

    $("#TuningSelector").change(function() { 
     DoSomethingWithTheValue(); 
     }); 

}); 

문제는 다음과 같습니다 계기가 변경되면, 스크립트는 TuningSelector 변화에 더 이상 응답하지 않습니다. 마찬가지로 JQuery는 새로운 TuningSelector 요소를 보지 못합니다 ...

JQuery에서 새로 고침해야합니까? 그래서 새로 고친 DOM을 볼 수 있을까요?

답변

36

일반적으로 on을 사용하여 선택기와 일치하는 새 요소에 처리기를 적용하고 DOM의 상위 요소에 위임하도록합니다. jQuery를 이벤트와

$('body').on('change', '#control', function() { 
    DoSomething(); 
}); 
+4

.live ("변경")은 jQuery 1.4까지 구현되지 않습니다. http://docs.jquery.com/JQuery_1.4_Roadmap#Events –

+1

@Sam - 그것을 지적 해 주셔서 감사합니다. 나는 그것을 아직 사용하지 않았고 그것이 지원 목록에 없다는 것을 깨닫지 못했습니다. 이를 반영하기 위해 내 대답이 업데이트되었습니다. – tvanfosson

+0

.live()는 .on()이 사용되지 않습니다. –

2

당신이 이벤트는, 그러나 jQuery를 1.3 라이브 이벤트로 이벤트를 제출, 흐림, 초점, mouseenter,하는 MouseLeave 변경을 지원하지 않습니다 .live 방법을 사용하는 것이 새로운 요소에 적용 할 경우. (변경, 제출 및 흐림/포커스는 jQuery 1.4의 경우 roadmap에 있습니다)

liveQuery 플러그인을 사용할 수도 있습니다.

관련 문제