이처럼 원치 않는 동작을 예상한다면 jQuery.trigger ()의 추가 매개 변수를 체크 박스의 클릭 핸들러로 전달하는 것이 좋습니다. 이 추가 매개 변수는 사용자가 체크 박스 자체를 직접 클릭하는 대신 클릭이 프로그래밍 방식으로 트리거되었음을 클릭 핸들러에 알리기위한 것입니다. 체크 박스의 클릭 핸들러는보고 된 체크 상태를 반전시킬 수 있습니다.
ID가 "myCheckBox"인 확인란에서 클릭 이벤트를 트리거하는 방법은 다음과 같습니다. 또한 true로 설정된 단일 멤버 인 nonUI를 사용하여 개체 매개 변수를 전달하고 있습니다.
$("#myCheckbox").trigger('click', {nonUI : true})
체크 박스의 클릭 이벤트 핸들러에서이를 처리하는 방법은 다음과 같습니다. 핸들러 함수는 두 번째 매개 변수로 nonUI 객체의 존재를 확인합니다. (첫 번째 매개 변수는 항상 이벤트 자체입니다.) 매개 변수가 존재하고 true로 설정되면보고 된 .checked 상태를 반전합니다. 이러한 매개 변수가 전달되지 않으면 (사용자가 UI의 확인란을 클릭하기 만하면되지 않음) 실제 .checked 상태를보고합니다.
$("#myCheckbox").click(function(e, parameters) {
var nonUI = false;
try {
nonUI = parameters.nonUI;
} catch (e) {}
var checked = nonUI ? !this.checked : this.checked;
alert('Checked = ' + checked);
});
http://jsfiddle.net/BrownieBoy/h5mDZ/의 JSFiddle 버전
Chrome, Firefox 및 IE 8에서 테스트했습니다.