2014-11-06 2 views
0

으로 문제를 체크이 코드는 나에게 In else을 제공자바 스크립트 확인란 내 자바 스크립트 파일의 코드에서 트리거

$(document).ready(function() { 
    $("input:checkbox[id^='chkbox_']").on('click',function(){ 
     var chkbox = $(this); 
     if(chkbox.is(':checked')){ 
      alert('In if'); 
     } else { 
      alert('In else'); 
     } 
    }); 
    $("#" + id).trigger('click'); 
}); 

입니다.

나는 이유를 이해하고이

+0

나 http://jsfiddle.net/dy4uzn51/ – ekans

+0

의 작업 미세! 이것을 확인하십시오 [링크] (http://jsfiddle.net/vhvpL5z3/) –

+0

@ekans는 jquery 1.8.3과 호환되지 않습니다. 이 링크를 확인하십시오 http://jsfiddle.net/vhvpL5z3/4/ –

답변

0

편집을위한 솔루션 무엇을하지 않습니다 :이 답변은 1.9 정도, 이전 버전에 적용 할 것 같다 때 "버그"seems to have been fixed.

나는이 문제에 너무 시달렸습니다. 그 이유는 실제로 마우스로 체크 박스를 클릭하면 상태가 먼저 설정되고 클릭 핸들러가 실행되기 때문입니다. jQuery를 사용하여 클릭을 트리거하면 클릭 핸들러가 먼저 실행되고 나중에 상태가 설정됩니다.

한 가지 해결책은 jQuery의 .click()/과 같지만 올바른 순서로 기본과 같은 네이티브 javascript 클릭 핸들러를 트리거하는 것입니다.

다른 하나는 checkbox.attr('checked', true).triggerHandler('click')이며 상태가 먼저 설정되고 triggerHandler()은 기본 동작 (확인란 선택)이 아니라 처리기 만 실행합니다.

두 솔루션 모두 클릭이 실제로 발생했는지 또는 트리거되었는지 여부에 관계없이 코드가 작동해야합니다.

+0

에서 작동하지만 고맙겠습니다.이 설명은 아주 좋은 방법입니다. 고마워요 @Peter Herdenborg –

+0

기꺼이 도와 드리겠습니다! 그러나 나는 어쨌든 그것이 효과가 있어야한다고 주장하는 다른 사람들을 본다. 어쩌면 그들은 정확하고 내 지식은 시대에 뒤떨어져 있습니다. 대신 jQuery를 업그레이드 할 수 있습니다. –

+0

Mine jquery 버전은 1.8.3이며 작동하지 않습니다. –

0

jquery 라이브러리 문제 일 수 있습니다. 또는 브라우저 문제. 나를 위해 그것의 일 벌금. 당신은 당신 1.8 최신 jquery 수 있습니다.

가 잘 작동 형성 click to view answerhttp://jsfiddle.net/dy4uzn51/2/

관련 문제