現在、JQueryについて学習しています。記述はeach文の中にfocusメソッドとblurメソッドを入れています。
動作自体は問題がなく動いていますが、その仕組みがよく理解できません。
eachはセレクタで指定した要素数分、一度だけ処理をおこなうと理解していたのですが(li要素が2つあったとしたら2回each内を繰り返す。)下記を実行してみるとフォーカスしたとき、フォーカスが外れたときに処理が行われ、その処理を何度クリックしても、その動作を繰り返します。
/****************************************
jQueryのコード
*****************************************/
$(document).ready(function(){
$(".textbox").each(function(){
//======1
var labelText=$(this).val();
$(this).focus(function(){
if($(this).val()==labelText){
$(this).val("");
}
}).blur(function(){
if($(this).val()==""){
$(this).val(labelText);
}
});
//=====2
});
});
/****************************************
ここからHTMLのコード -->
*****************************************/
<p> <input type="text" class="textbox" size="40" name="name" id="name" value="お名前" /> </p> <p> <input type="text" class="textbox" size="40" name="email" id="email" value="メールアドレス" /> </p> <p> <input type="submit" class="button" value="送信" /> </p>ためしに一度、テキストボックス以外をクリックした後にまた、テキストボックスをクリックしてもeachイベントが始まります。
//======1から//=====2までの中身をただアラートを表示するだけならテキストボックスのかず分、表示してその処理は終わりました。
そして、再びeach内の処理を始めたかったらブラウザを更新するしかなかったのですが、
なぜ、なかのイベントをfocusとblurにすると何度もeach内の処理が行われるのでしょうか。
初心者で大変お恥ずかしい質問なのですが、ご教授頂けると大変助かります。
どうぞよろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/05/01 13:39