現在、アプリケーションをアップグレードして jQuery 1.6.1 (以前は 1.4.4 を使用) を使用していましたが、.click()
イベントが自動的にイベントをトリガーするように.change()
なりました。
ここに簡単な例を作成しました: http://jsfiddle.net/wDKPN/
1.4.4 を含めると、イベントがトリガーされたときに.change()
関数が起動しないことに注意してください。.click()
しかし、1.6 に切り替えると、がトリガーされたときに.change()
イベントが発生します。.click()
2 つの質問:
これはバグですか? プログラムによるトリガーは、他のイベントも発生させる
.click()
べきではないようです (たとえば、ユーザーのクリックを「模倣」するために、自動的に発生する.blur()
andも間違っているように思われます)。.focus()
change()
イベントをバインドし、その要素のイベントとイベントの両方をトリガーする適切な方法は何ですか?click()
change()
単に を呼び出し.click()
て、 も起動するという事実に依存し.change()
ますか?$('#myelement').change(function() { // do some stuff }); $('#myelement').click(); // both click and change will fire, yay!
私の古いコードでは、このパターンを使用して、ajax 呼び出しの後にいくつかのチェックボックス (およびチェックされた状態と値) を初期化しています。
$('#myelement').change(function() {
// do some stuff including ajax work
}).click().change();
しかし、1.6.1 では、私のロジックは 2 回起動します (1 回.click()
と で 1 回.change()
)。トリガーを削除するだけ.change()
で、将来のバージョンでも jQuery が引き続きこのように動作することを期待できますか?