bindメソッドは、要素セットのイベントeventに対応するイベント・リスナfncを定義します。<event>(fnc)メソッドでもほぼ同様の処理ができますが、異なる点もあります。それは、bindメソッドではイベント・リスナに対して、任意のパラメータdataを引き渡すことができるという点です。
具体的な例を見てみましょう。以下は、<p>タグをクリックしたタイミングで、メッセージをダイアログ表示する例です。この際、表示するメッセージをbindメソッドの引数data経由で引き渡しています。
<script type="text/javascript">
$(function() {
  // <p>要素をクリックしたときのイベント・リスナを定義
  $('p').bind('click', { msg: 'クリックされました。' },
    function(e) {
      window.alert(e.data.msg);
    }
  );
});
</script>
  ……中略……
<p>クリックしてください。</p>
引数dataはオブジェクト・リテラルの形式で渡すことができます。また、引数dataで指定されたパラメータ情報には、イベント・リスナに渡されたeventオブジェクト(上記リスト094では引数e)を経由して、dataプロパティにアクセスすることで取得できます(太字部分)。
なお、eventオブジェクトからアクセスできるメンバには、dataプロパティのほかにも、以下のようなものがあります。
| メンバ | 概要 | 
|---|---|
| isDefaultPrevented() | preventDefaultメソッドが呼び出されたか | 
| isPropagationStopped() | stopPropagationメソッドが呼び出されたか | 
| pageX | マウス・ポインタのX座標 | 
| pageY | マウス・ポインタのY座標 | 
| preventDefault() | イベント本来の動作をキャンセル | 
| result | イベント・リスナによって返された最後の値 | 
| stopPropagation() | イベント・バブリングを停止 | 
| target | イベント発生元の要素 | 
| timeStamp | イベントが発生した時刻(タイムスタンプ値) | 
| type | イベントの種類 | 
| which | キー/ボタンの種類(キー・コード、または文字コード) | 
| eventオブジェクトの主なメンバ | |
例えば、イベントのデフォルトの動作をキャンセルしたいという場合には、イベント・リスナの中でpreventDefaultメソッドを呼び出せばよいですし、以降のイベント・バブリングをキャンセルしたい場合にはstopPropagationメソッドを呼び出します。ちなみに、イベント動作、バブリングともにキャンセルしたい場合には、イベント・リスナの戻り値としてfalseを返すようにしてください。
Copyright© Digital Advantage Corp. All Rights Reserved.