jQuery를 사용하여 .prop를 변경해도 .change 이벤트가 트리거되지 않습니다.


125

확인란에 이벤트 리스너가 있습니다.

<input type="checkbox" name="something">

내 이벤트 리스너 :

$('input[type="checkbox"][name="something"]').change(function() { 
    //DO SOMETHING 
});

.prop확인란 을 변경하는 또 다른 이벤트 리스너가 있습니다 .

$('#button').click(function() { 
    $('input[type="checkbox"][name="something"]').prop("checked", false);
});

확인란을 선택하면 DO SOMETHING트리거됩니다. 을 클릭 #button하면 .prop변경 사항이 표시되고 확인란이 시각적으로 선택 취소되지만 실행 DO SOMETHING되지 않습니다.

내가 간과하고있는 것?


답변:


196

Change 이벤트는 코드를 사용하여 값을 수정할 때가 아니라 페이지에서 사용자 상호 작용에 의해 값이 변경 될 때 시작됩니다.

여기 에서 속성 을 사용 .change()하거나 .trigger("change")변경 한 후 :

$('input[type="checkbox"][name="something"]').prop("checked", false).change();

작동 데모


2
prop변경 이벤트 생성을 처리 했다고 생각 하십니까?
Gone Coding

1
멋있는. 감사. 개념을 입증하는 좋은 데모. +1 감사합니다.
Gone Coding

감사! 그래서 .prop (). change ()가 내 쪽에서 작동하지 않는 이유는 jQuery를 호출하는 약간 다른 방법이있는 MeteorJS에서 jQuery를 수행하고 있기 때문입니다. 나는 당신의 방식으로 정확하게 시도했고 효과가있었습니다.
fuzzybabybunny 2014-06-26

@fuzzybabybunny : MeteorJS 때문이 아닙니다. prop ()는 변경 이벤트를 트리거하지 않습니다.
Milind Anantwar 2014-06-26

@MilindAnantwar, 나는 Meteor 코드 ( Template.myTemplate.events) 에서 .prop 다음에 .change를하고 있었지만 작동하지 않았습니다. 그런 다음 똑같은 jQuery 코드를 아래 Template.myTemplate.rendered에 놓고 잘 실행되었습니다.
fuzzybabybunny 2014-06-26
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.