初心者向けのjQuery入門講座|デザイナー向けのJavaScriptライブラリ

このエントリーをはてなブックマークに追加
索引
Core:コアとなる仕組み
Selectors:セレクタ
Attributes:属性
Traversing:対象の変更
Manipulation:操作
CSS:スタイルシート
Events:イベント
Effects:演出効果
Ajax:xml等との連携
Utilities:ユーティリティ
Data:データ
Miscellaneous:諸々
Deferred:処理管理
Callbacks:コールバック
Internals:内部処理

.click( )クリック時の処理を設定

構文

クリック時の処理を設定返値:jQueryオブジェクト
jQo.click( function )ver1.0〜
jQo.click( )ver1.0〜
jQo.click( object, function )ver1.4.3〜

機能

jQueryオブジェクトで指定した要素がクリックされた際に引数のfunctionを実行します。引数にfunctionを設定しない場合は、要素に設定(バインド)されたfunctionを実行します。

ver1.4.3からは引数にobjectオブジェクトを設定することで、実行するfunctionにデータを渡すことができます(データはイベントオブジェクトのdataプロパティ経由で渡されます)。

クリックとは要素上でマウスダウンされ、要素上でマウスアップされたときに発生するイベントです

解説

クリックで実行する処理を設定

サンプル(click/01.html)を開いてbody内にdiv要素が1つあることを確認してください。jQueryは以下の様に記述され、clickメソッドの引数にfunctionの「clickFunc」が設定されています。

$(function () {
	$("div").click(clickFunc);
});

clickメソッドの引数に設定するFunctionは以下の様な構文になっています。まず引数(イベントオブジェクト)を受け取ります。そしてクリックしたら実行したい処理を{}の中に書きます、何かをreturnする必要はありません。イベントオブジェクトは別項にまとめてあるので、そちらを確認してください。

clickに設定するFunctionの構文
function 任意の名前(イベントオブジェクト){
 クリックで実行したい処理
}

サンプルclick/01.htmlで利用したclickFuncは以下の様になっており、アラートで「click」と表示するだけです。このサンプルでは引数(イベントオブジェクト)は利用していません。

function clickFunc(){
	alert("click");
}

結果として、div要素をクリックするとアラートで「click」と表示されます。
イベントのfunction設定は、無名関数を利用することが多いです。→サンプル(click/01b.html

$("div").click(function(){
	alert("click");
})

他の要素に設定されたclick時の処理を実行する

clickメソッドは引数を設定しないと、指定した要素に設定されたclick時の処理を実行します。
サンプル(click/02.html)を開いてbody内にbutton要素とdiv要素があることを確認してください。

<div></div>
<button>CLICK</button>

続いてjQueryを確認してください。div要素に設定されたクリックの処理はclick/01b.htmlと同じですが、以下の処理が追加されています。この処理によってbutton要素をクリックするとdiv要素に設定されたクリック時の処理が実行されます。

$("button").click(function(){
	$("div").click();
})

結果として、button要素をクリックしてもdiv要素をクリックするのと同じようにアラートで「click」と表示されます。

objectオブジェクトをfunctionに渡す

clickメソッドは第1引数にobjectオブジェクトを設定することで、実行するfunctionにデータを渡すことができます。データはイベントオブジェクトのdataプロパティを介して渡されます。サンプル(click/03.html)を開いてbody内の構成はclick/01b.htmlと同じ事を確認してください。

jQueryは以下の様に記述され、clickメソッドの第1引数にtestプロパティが10の値を持ったobjectオブジェクトが設定されています。このデータはイベントオブジェクト(eo)を通してfunctionに渡され、dataプロパティの値として取得できます。

$("div").click({test:10},function(eo){
	alert(eo.data.test);
})

結果として、div要素をクリックすると第1引数で渡されたtestプロパティの値「10」がアラートで表示されます。

関連項目

ダブルクリック時の処理を設定したい場合はdblclickメソッドを利用します。

メモ

動的な要素に対応していません

clickも含め、これから紹介していくイベント関連のメソッドは動的な要素(プログラムによって後から追加された要素)に対応していません。サンプル(click/test01.html)を開いてbody内の構成を確認してください。div要素の代わりにbutton要素が配置されています。

<body>
	<button>click</button>
</body>

続いてjQueryを確認してください。click/01b.htmlのjQueryに以下の処理が追加されています。buttonをクリックするとappendToメソッドを利用してbody内にdiv要素を追加します。

$("button").click(function(){
	$("<div />").appendTo("body")			
})

実際にbuttonをクリックしてdiv要素を追加してください。clickイベントの設定はclick/01b.htmlと同じですが、クリックしてもアラートは表示されません。これはclickが動的な要素に対応していないためです。動的な要素に対応したい場合はイベントハンドラアタッチメントのonメソッドを利用してください。

追加した後でイベントを設定すればOK

プログラムで後から要素を追加する場合でも、追加した後にclickメソッドを利用すれば機能します。
サンプル(click/test02.html)を開いてbody内に何も無いことを確認してください。

buttonが無い代わりに、以下の様に無条件でdiv要素を追加するようにしました(1行目)。そして、その後でclickメソッドを利用しています。

$("<div />").appendTo("body")		
$("div").click(function(){
	alert("click");
});

このサンプルではdiv要素をクリックするとアラートが表示され、きちんとclickイベントの処理が設定されているのが確認できます。このように要素を追加した後でイベントを設定すれば機能します

順番を間違える(イベントを設定した後に要素を追加する)と機能しないので注意してください。
→サンプル(click/test02b.html

$("div").click(function(){
	alert("click");
});
$("<div />").appendTo("body")