2010/08/12

[jQuery]bindについて

先ほどまでbindの使い方について少し調べました。
(調査先は、jQueryリファレンスのbind)

簡単に言ってしまうと、イベントを貼り付けることができるみたいです。
さっそく、下記のプログラムを作成しました。

<html>
<head>
<title>Jquery.bindテスト</title>
<script type="text/javascript"
src="./jquery-1.4.2.min.js"
></script>
</head>
<body>
<input type="button"
value="Run"
id="hoge"
>
<script
type="text/javascript"
>
$("#hoge").bind(
'click'
, function(){
alert("foo");
}
);
</script>
</body>
</html>

上の場合、idのhogeにonclickイベントを追加しています。

実際に、idがhogeである要素(ここではボタンですが)がクリックされた場合、無名関数が起動し、fooという文言を出すように指示しています。

クリックイベント先の関数が長くなってしまう場合、当然、中出し、失礼、外出ししたい場合は、こんなように書き換えることができるのではないかと。
<html>
<head>
<title>Jquery.bindテスト</title>
<script type="text/javascript"
src="./jquery-1.4.2.min.js"
></script>
</head>
<body>
<input type="button"
value="Run"
id="hoge"
>
<script
type="text/javascript"
>
function goaway(){
alert("take my breath away");
}

$("#hoge").bind(
'click'
, goaway
);
</script>
</body>
</html>

確かに動きます。

リファレンスを少し眺めると、変数の引継ぎもできるようです。
(まー、これは、JavaScriptの仕様上、もともとできると思ったりもするのですが。)

<html>
<head>
<title>Jquery.bindテスト</title>
<script type="text/javascript"
src="./jquery-1.4.2.min.js"
></script>
</head>
<body>
<input type="button"
value="Run"
id="hoge"
>
<script
type="text/javascript"
>
var msg = "Jessica Simpson";

$("#hoge").bind(
'click'
, function(){
alert(msg);
}
);
</script>
</body>
</html>

実行すると、Jessica Simpsonと表示されます。

これだとあまりにも素っ気無いのでbindメソッドの引数として渡すことも可能です。
それが次の例。
<html>
<head>
<title>Jquery.bindテスト</title>
<script type="text/javascript"
src="./jquery-1.4.2.min.js"
></script>
</head>
<body>
<input type="button"
value="Run"
id="hoge"
>
<script
type="text/javascript"
>
var msg = "Tom Cruise";

$("#hoge").bind(
'click'
, {message:msg}
, function(event){
alert(event.data.message);
}
);
</script>
</body>
</html>

第二引数に、JSONパラメータとして関数に渡したいパラメータの設定を行い、同時に、無名関数に引数名を指定して「引数名.data.JSONのkey」でパラメータにアクセスすることができます。

formの内容を確認したい場合などにこの方法は便利かもしれませんね。
そんな場合は、おそらくきっと、こんな感じになるのかなと。
<html>
<head>
<title>Jquery.bindテスト</title>
<script type="text/javascript"
src="./jquery-1.4.2.min.js"
></script>
</head>
<body>
<input type="text" id="baka" value="">
<input type="button"
value="Run"
id="hoge"
>
<script
type="text/javascript"
>
var msg = "Tom Cruise";

$("#hoge").bind(
'click'
, {validate:$("#baka")}
, function(event){
var temp = event.data.validate;
alert(temp.val());
}
);
</script>
</body>
</html>

(これで、textの内容を取得することができるのですが、valメソッドがなんだかよくわかってない。。。まー推測はつくのですが。)

0 コメント:

コメントを投稿