2015-01-30 4 views
0

동적으로 문서에 추가되는 요소가 (주로 <select>) 있습니다. 내가 원하는, 함수 호출에 어떤 시점에서jQuery를 사용하여 프로그래밍 방식으로 요소에 이벤트 트리거

$(document).on('click', '.cfield_fieldtype', function(){ 
    // do something... 
}); 

$(document).on('change', '.cfield_fieldtype', function(){ 
    // do some other stuff... 
}); 

: (향후에 추가 될 것입니다 심지어) 모든 요소가 그들에게 바인더 제본 clickchange 이벤트 핸들러가 있는지 확인하기 위해, 나는 $(document).on 방법을 사용 내 <select> 요소를 재설정하려면 각 selected의 첫 번째 <option>을 설정하십시오. 그러나 이것이 발생하면 사용자 상호 작용에 의해 마치 clickchange 이벤트를 프로그래밍 방식으로 트리거하고 싶습니다. 첫 번째 옵션을 selected으로 설정하면 click 이벤트가 실행되지는 않지만 change 이벤트는 트리거되지 않습니다. 요소에 대해 이러한 이벤트를 발생 시키려고하면 반응을 보이지 않고 아무 것도하지 않습니다. 코드는 다음과 같습니다.

$("#cfield_panel\\["+unique+"\\] select").each(function(){ 
    name = $(this).attr('name'); 
    $(this).val($("[name='"+name+"'] option:first").val()); 
    $(this).triggerHandler('click'); 
    $(this).triggerHandler('change'); 
}); 

어떻게 이러한 이벤트를 실행할 수 있습니까?

+0

관련 HTML 제공 문제가되는 최소한의 샘플 –

답변

0

사용 .click().change() : 이벤트와 함께

$(this).click(); 
$(this).change(); 

또는 .trigger() : 당신은 trigger() 방법을 사용할 수 있습니다

$(this).trigger('click'); 
$(this).trigger('change'); 
+1

* jQuery에는'.triggerHandler()'라는 메서드가 없습니다. * 물론 있습니다 (http://api.jquery.com/triggerHandler/). –

+0

나는 두 가지 방법 모두 시도했지만 어느 것도 작동하지 않았다. – ACs

+0

@ACs : 코드 실행 여부를 확인하기 위해 트리거 문 앞에 경고를 두어보십시오. –

0

대신 (이벤트를 위임하고 있기 때문에) 이벤트를 전파 할 수있는 :

$(this).trigger('click'); 
$(this).trigger('change'); 
+3

이것이 좋은 대답 인 이유에 대한 설명에서 [편집] 해 주실 수 있습니까? – Scimonster

관련 문제