0

次のマークアップがあるとします。

<form>
    <button type="button" id="all">check all</button>
    <button type="button" id="none">check none</button>
    <input type="checkbox" value="one" />
    <input type="checkbox" value="two" />
    <input type="checkbox" value="three" />
</form>

そして、次の JavaScript コード:

(function($, document) {
    $('#all').on('click', function() {
         $('input', $(this).parent()).prop('checked', 'checked');
    });
    $('#none').on('click', function() {
        $('input', $(this).parent()).removeProp('checked');
    });

    $('input').on('change', function() {
        alert(this.value);
    });
}(jQuery, document));

( http://jsfiddle.net/inst/h7kyq/1/を参照)

いずれかのボタンをクリックしたときに入力の onChange イベント ハンドラーが実行されないのはなぜですか?

4

2 に答える 2

3

JavaScript で変更が発生した場合、イベントは発生しません。自分でイベントを発生させる必要があります。

$('input', $(this).parent()).removeProp('checked').change();
于 2012-06-04T21:17:15.937 に答える
1

入力要素へのプログラムによる変更 (スクリプトからの変更) は、onchangeイベントをトリガーしません。

または、ステータス/値を変更するときに変更イベントを手動でトリガーする必要があります。

下記参照、

$('input', $(this).parent()).removeProp('checked').change();

デモ: http://jsfiddle.net/h7kyq/4/

于 2012-06-04T21:17:43.743 に答える