jQuery API の triggerHandler( eventType, extraParameters ) は、1つ目の引数に指定したイベントを実行する際、2つ目の引数に指定したパラメーターを引き渡す。trigger( eventType, [ param1, param2, ・・・ ] ) のように、extraParameters を[ ] で囲んで記述すれば、複数のパラメーターを引き渡すこともできる。trigger( eventType, extraParameters ) と似ているが、ブラウザのデフォルトの動作は行わず、指定したイベントハンドラ動作のみ実行する。
記述方法
パラメーターが1つだけの場合
trigger( eventType, param )パラメーターの設定
jQuery( セレクター2 ) . triggerHandler( { イベントタイプ2, パラメーター } );
} );
「セレクター1」の要素の「イベントタイプ1」のイベント時、「セレクター2」の要素の「イベントタイプ2」のイベントハンドラを実行する。その際、「パラメーター」をイベントハンドラに引き渡す。
パラメーターの受け取り
イベントハンドラ
} );
パラメーターを「パラメーター変数名」に格納。
パラメーターが複数の場合
trigger( eventType, [ param1, param2, ・・・ ] )パラメーターの設定
jQuery( セレクター2 ) . triggerHandler( { イベントタイプ2, [ パラメーター1, パラメーター2 ] } );
} );
「セレクター1」の要素の「イベントタイプ1」のイベント時、「セレクター2」の要素の「イベントタイプ2」のイベントハンドラを実行する。その際、「パラメーター1」と「パラメーター2」をイベントハンドラに引き渡す。
パラメーターの受け取り
イベントハンドラ
} );
パラメーター1を「パラメーター変数名1」に格納、パラメーター2を「パラメーター変数名2」に格納。
実装例(サンプル)
実装例(サンプル)の動作について
「入力する ( trigger )」ラジオボタンをクリックすると、テキスト入力欄の背景色を白色にし、テキスト入力欄の右側に「 ←入力」と2.5秒ほど青色のテキストで表示し、テキスト入力欄をフォーカスする。
「入力する ( triggerHandler )」ラジオボタンをクリックすると、テキスト入力欄の背景色を桃色にし、テキスト入力欄の右側に「 ←入力」と2.5秒ほど赤色のテキストで表示するが、テキスト入力欄をフォーカスしない。
実装例(サンプル)のソースコード
JavaScript
<!--
jQuery( function() {
jQuery( '#jquery-api-focus' ) . focus( function( event, param1, param2 ) {
jQuery( this ) . css( 'backgroundColor', param1 || 'white' );
jQuery( '#jquery-api-focused' ) . css( 'color', param2 || 'blue' ) . fadeIn( 500 ) . text( ' ←入力' ) . fadeOut( 2000 );
} );
jQuery( '#jquery-api-trigger' ) . click( function () {
jQuery( '#jquery-api-focus' ) . trigger( 'focus', [ 'white', 'blue' ] );
} ) . click();
jQuery( '#jquery-api-triggerHandler' ) . click( function () {
jQuery( '#jquery-api-focus' ) . triggerHandler( 'focus', [ 'pink', 'red' ] );
} );
} );
// -->
</script>
CSS
<!--
#jquery-api-radio input {
margin: 0;
}
#jquery-api-radio label {
font-size: 16px;
color: black;
}
#jquery-api-focused {
color: blue;
}
-->
</style>
HTML
<p>
<label for="jquery-api-trigger">
<input type="radio" id="jquery-api-trigger" name="jquery-api-radio"> 入力する ( trigger )
</label>
<p>
</p>
<label for="jquery-api-triggerHandler">
<input type="radio" id="jquery-api-triggerHandler" name="jquery-api-radio"> 入力する ( triggerHandler )
</label>
</p>
</div>
<p><input type="text" id="jquery-api-focus"><span id="jquery-api-focused"></span></p>