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変更イベントの生成を処理したと思いますか?
コーディング終了2014年

1
涼しい。ありがとう。コンセプトを証明する優れたデモ。+1ありがとうございます。
コーディング終了2014年

ありがとう!したがって、.prop()。change()が私の側で機能しなかった理由は、jQueryを呼び出す方法が少し異なるMeteorJSでjQueryを実行しているためです。私はあなたのやり方で正確に試してみましたが、うまくいきました。
fuzzybabybunny 2014年

@fuzzybabybunny:MeteorJSが原因ではありません。prop()は変更イベントをトリガーしません。
Milind Anantwar 2014年

@ MilindAnantwar、Meteorコード(Template.myTemplate.events)で.propに続いて.changeを実行していて、動作しませんでした。次に、まったく同じjQueryコードを配置したところTemplate.myTemplate.rendered、問題なく動作しました。
fuzzybabybunny 14年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.