elemクラスのdivがいくつか並んでいて、
<div class="elem" id="1">
<div class="elem" id="2">
<div class="elem" id="3">
クリックしたらabcクラスをつけ、
そうじゃないdivからはabcクラスを外すような処理を書きたい場合に
$(".elems").click(function(){
var arg = $(this).prop("id");
$(".elems").each(function(){
//処理
// この中で argを読んでもundifinedになる
});
});
と書くと、引数を渡すことが出来ない。
以下のようにクロージャにぶっこんでいやると引数を渡すことが出来る
var callbackMethod = function (id) {
return function(index, element){
var tmp_id = $(this).prop("id");
if(tmp_id == id ){
$(this).addClass("abc");
}else{
$(this).removeClass("abc");
}
};
};
$(".elems").click(function(){
var arg = $(this).prop("id");
$(".elems").each(callbackMethod(arg));
});
jQueryだよりにコード書いてると辛い時があるよねってお話でした。
もっとクールに書く方法もきっとあるはず