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.