jQuery 체크박스를 선택하고 트리거 javascript onclick 이벤트

나는'm 확인하려 checkbox jQuery 사용 및 트리거 onclick 이벤트이다.

말이 있는 확인란에서 정의 html:

<input type="checkbox" value="checked" name="check1" onclick="alert(this.value);">

가 jQuery 문는 트리거 기능:

$('input[name=check1]').attr('checked', true);

결과는 확인란에 확인되지만 javascript onclick 이벤트가 트리거되지 않습(따라서 경고). 그러나 내가 있다면 트리거를 클릭하도 수동으로 같은:

$('input[name=check1]').attr('checked', true).trigger('click');

결과는 확인란을 얻을 확인,자바 스크립트 onclick 이벤트가 트리거(값이 올바르게 입수)그러나 다는 확인란을 얻을 선택하지 않습니다.

할 수 있는 사람이 방법을 말해 내가 달성할 수 있는 내가 무엇'm 하려고 할까?

해결책

사용.triggerHandler()대신.트리거():

$('input[name=check1]').attr('checked', true).triggerHandler('click');

또한,사용.prop()대신.attr():

$('input[name=check1]').prop('checked', true).triggerHandler('click');

(if you'다시 사용하여 jQuery1.6 또는 새로운.) 편집—또한,주석에는 다른 응답,당신을 조심해야 jQuery's 이상한 행동을 할 때 프로그래밍 방식으로 이벤트 트리거링. [여기에 설명 jsfiddle.](http://jsfiddle.net/Pointy/nrYec/)을 때 실제"하에서 발생하는 요소,"하는 핸들러한 요소입 업데이트 값"점검"플래그입니다. 즉,당신은 클릭하면 선택하지 않은 체크박스를 클릭 처리기조"점검"플래그 설정을true이다. 그러나,당신은 트리거"하에 있는 확인란을 선택하지 않을 통해 jQuery,"하는 핸들러를 볼"점검"플래그 설정을false! 는's 는 정말 나쁜 것은,내 생각,그러나 그's 항상 하지 않는 또 다른 이유가 있습니다.

편집 다시—오,또는데요,다른 중요한(그리고 자극적)jQuery 불:대한 이유를 알 수 없는.triggerHandler()API 만 호출 처리기에와 일치하는 요소. 하려는 경우 트리거 모든 checkbox"하는 핸들러,다른 말로:

$('input:checkbox').triggerHandler('click');

그 첫 번째는 확인란에 페이지 트리거됩니다. 내가 무슨 일반적으로 수행에 대처하기 위해 정신은 바인딩하는 핸들러와 함께 나 자신이 가짜 이벤트뿐만 아니라 이름"하:

$('input:checkbox').bind('click my-click', function() ... ) // or ".on()" with 1.7

는 방법을 트리거할 수 있"my-click"고 두 세계의 최고:라이브러리를 트리거 처리기에일치하는 요소이지만,그't toggle 의 실제 상태 요소입니다.

해설 (1)

변경:

$('input[name=check1]').attr('checked', true).trigger('click');

하기:

$('input[name=check1]').trigger('click').prop('checked', true);
해설 (1)

이 대답세금:

$(&#39;입력[name=확인 1]&#39;).attr(&#39;점검&#39;,true).경();

[jsFiddle demo][1]

해설 (0)

.에(&#39;변화&#39;,...)는 확실히 당신이 무엇을해야한 바인딩을 확인란에 요소(그것은 동작을 훨씬 더 합리적으로. 다음 당신 수동으로 트리거.(클릭)에 원하는 요소의 상태를 전환하는 적절한 이벤트가 트리거에 일어난다(참조 DOM 에 일치하는 상태를 어떤 사람들기 처리기도).

<input type="checkbox" value="checked" name="check1">
<script>
    $('input').on('change', function(e) {alert(e.target.value);});
    $('input').click();
    // see the alert, and if you checked $(e.target).is(':checked') you should get true
</script>
해설 (0)