jQueryの ".triggerHandler()"メカニズムは、 ".trigger()"とは異なり、 jQueryオブジェクトが呼び出されます。言い換えれば、複数の要素が選択されている場合のjQuery ".triggerHandler()"と ".trigger()"の比較
$('.all-over-the-page').triggerHandler("readjust");
は、そのクラスとページ上の多くの要素があっても、クラスで最初の要素「オールオーバーザページ」の「再調整」のハンドラを呼び出します。一方、 ".trigger()"メソッドは、すべてに影響します。
私は ".each()"を使ってこれを回避することができます(または私の代わりに自分の代わりに書きます)が、この点で2つの理由が異なる理由についていくつかの根拠がありますか?それは私には意味がない。 (私はそれがほぼ確実になりました変更することができないことはもちろん理解しています。)を明確にする
編集:私はコンテキストを提供する場合
をそれは私がこの上で、私の頭を悩まてる理由を理解する方が簡単でしょう私は実際に持っているコードのスタイルで。ページにさまざまな「ウィジェット」機能のコードをまとめると、多くの場合イベントハンドラが必要になります。良い例は、関連性がチェックボックス、ラジオボタン、セレクタによって制御されるいくつかのフィールドを持つ、ある種のフォームです。その一般的な例は、「e-commerceサイト」に表示される「配送先住所」チェックボックスです。このチェックボックスをオンにすると、配送先住所が無効になり、請求先住所が使用されます。
他のコードは、チェックボックスコントロールウィジェットとはまったく独立しているため、実際にはチェックボックスの設定をプログラムで更新することを含む可能性があります。その場合、そのウィジェットの他のコードでは、「triggerHandler()」を使用してウィジェットを通知したい場合があります。「私はいくつかのものを更新したので、現在のステータスを再確認し、必要に応じて調整します。
したがって、もし「.triggerHandler()は、」私は使用することができ、選択したすべての要素を操作します:
$theForm.find('input, select, textarea').triggerHandler('change');
をし、すべてのそれらのハンドラが実行され、彼らが必要とするものは何でも行うことができます。私が言ったように、書くのは簡単です:
$theForm.find('input, select, textarea').each(function() {
$(this).triggerHandler('change');
});
+1良い質問Pointy –
ここで具体的に何をしようとしているのか分かりません。あなたが解決しようとしていることの文脈をもう少し分かりますか? –
説明文を追加して更新しました。 – Pointy