Skip to content

Instantly share code, notes, and snippets.

@dameleon
Last active December 11, 2015 01:18
Show Gist options
  • Save dameleon/4522253 to your computer and use it in GitHub Desktop.
Save dameleon/4522253 to your computer and use it in GitHub Desktop.
非同期的なアレ
for (var i = 1; i < 4 ; i++) {
var listN = eval("list_"+ i);
var cntN = eval("cnt_"+ i);
$(listN).click(function(){
// ここのcntNは実行時に参照される = cntNが書き換わっているとその値を読んでしまう
// ので値を設定した関数を作ってあげる必要がある
$(cntN).animate(
{width: "toggle"},
"fast",
"easeInQuart"
);
});
}
///////////////////////////////////////////////////
for (var i = 1; i < 4 ; i++) {
// evalしなくても平気&class名とかなら.つけなくて大丈夫?
var listN = ".list_" + i;
var cntN = ".cnt_" + i;
$(listN).click(generateAnime(cntN));
}
// 関数に渡すことで値の参照を明示的にセットする
function generateAnime(target) {
return function() {
$(target).animate(
{width: "toggle"},
"fast",
"easeInQuart"
);
}
}
///////////////////////////////////////////////////
// これでも動くと思われ
for (var i = 1; i < 4 ; i++) {
// evalしなくても平気&class名とかなら.つけなくて大丈夫?
var listN = ".list_" + i;
var cntN = ".cnt_" + i;
bindAnime(listN, cntN);
}
function bindAnime(element, target) {
$(element).click(function() {
$(target).animate(
{width: "toggle"},
"fast",
"easeInQuart"
);
});
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment