triggerHandler( eventType, extraParameters )

jQuery API の triggerHandler( eventType, extraParameters ) は、1つ目の引数に指定したイベントを実行する際、2つ目の引数に指定したパラメーターを引き渡す。trigger( eventType, [ param1, param2, ・・・ ] ) のように、extraParameters を[ ] で囲んで記述すれば、複数のパラメーターを引き渡すこともできる。trigger( eventType, extraParameters ) と似ているが、ブラウザのデフォルトの動作は行わず、指定したイベントハンドラ動作のみ実行する。

記述方法

パラメーターが1つだけの場合

trigger( eventType, param )

パラメーターの設定

jQuery( セレクター1 ) . イベントタイプ1( function() {
    jQuery( セレクター2 ) . triggerHandler( { イベントタイプ2, パラメーター } );
} );

「セレクター1」の要素の「イベントタイプ1」のイベント時、「セレクター2」の要素の「イベントタイプ2」のイベントハンドラを実行する。その際、「パラメーター」をイベントハンドラに引き渡す。

パラメーターの受け取り

jQuery( セレクター2 ) . イベントタイプ2( function( event, パラメーター変数名 ) {
    イベントハンドラ
} );

パラメーターを「パラメーター変数名」に格納。

パラメーターが複数の場合

trigger( eventType, [ param1, param2, ・・・ ] )

パラメーターの設定

jQuery( セレクター1 ) . イベントタイプ1( function() {
    jQuery( セレクター2 ) . triggerHandler( { イベントタイプ2, [ パラメーター1, パラメーター2 ] } );
} );

「セレクター1」の要素の「イベントタイプ1」のイベント時、「セレクター2」の要素の「イベントタイプ2」のイベントハンドラを実行する。その際、「パラメーター1」と「パラメーター2」をイベントハンドラに引き渡す。

パラメーターの受け取り

jQuery( セレクター2 ) . イベントタイプ2( function( event, パラメーター変数名1, パラメーター変数名2 ) {
    イベントハンドラ
} );

パラメーター1を「パラメーター変数名1」に格納、パラメーター2を「パラメーター変数名2」に格納。

実装例(サンプル)

実装例(サンプル)の動作について

「入力する ( trigger )」ラジオボタンをクリックすると、テキスト入力欄の背景色を白色にし、テキスト入力欄の右側に「 ←入力」と2.5秒ほど青色のテキストで表示し、テキスト入力欄をフォーカスする。

「入力する ( triggerHandler )」ラジオボタンをクリックすると、テキスト入力欄の背景色を桃色にし、テキスト入力欄の右側に「 ←入力」と2.5秒ほど赤色のテキストで表示するが、テキスト入力欄をフォーカスしない。

実装例(サンプル)のソースコード

JavaScript

<script>
<!--
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

<style>
<!--
#jquery-api-radio input {
    margin: 0;
}
#jquery-api-radio label {
    font-size: 16px;
    color: black;
}
#jquery-api-focused {
    color: blue;
}
-->
</style>

HTML

<div id="jquery-api-radio">
    <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>

スポンサード リンク

カテゴリー: API, JavaScript, jQuery, イベント, イベントハンドラ・アタッチメント パーマリンク