triggerHandlerメソッド
triggerHandlerメソッドは、
要素にバインドされたすべてのイベントハンドラを
起動することができます。このメソッドは
triggerメソッドと
同様に動作しますが、いくつかの違いがあります:
イベントハンドラは実行されますが、標準的な
イベントは発生しません。例えば
triggerHandler('submit')を
実行しても、submitイベントは発生しません。
triggerHandlerメソッドは
セット内の最初の要素に対してのみ作用します。
triggerHandlerによって起動されたイベントは
DOM要素の階層をバブリングしません。
triggerHandlerはjQueryオブジェクトを返さず、
最後に呼び出されたハンドラから取得した値を返します。
ハンドラが実行されない場合は、undefinedを返します。
構文
最初のパラメータとして、文字列形式のイベントタイプを渡すことができます。 2番目のオプションパラメータとして、ハンドラに渡す追加パラメータを含む 配列またはオブジェクトを指定できます:
$(セレクタ).triggerHandler(イベントタイプ, [追加パラメータ]);
最初のパラメータとして、jQuery.Eventオブジェクト形式の
イベントを渡すこともできます:
$(セレクタ).trigger(イベント, [追加パラメータ]);
例
#test1を持つボタンをクリックしたときに、
入力フィールドがフォーカスを受け取り、コンソールに
'Focused'と表示されるようにしましょう。
つまり、ハンドラ関数とフォーカスイベントの両方が実行されます。
#test2を持つ2番目のボタンをクリックした場合、
ハンドラ関数のみが実行され、入力フィールドはフォーカスを受け取りません:
<button id="test1">button1</button>
<button id="test2">button2</button>
<input type="text">
$('#test1').click(function() {
$('input').trigger('focus');
});
$('#test2').click(function() {
$('input').triggerHandler('focus');
});
$('input').focus(function() {
console.log('Focused')
});