我有一個包含MapIcon的數組,每個數組都包含一個名稱和一個圖像。將3個點擊函數合併爲1 jquery
該數組被稱爲mapIcon。
我們有這三個函數在分別定義每個實例時工作,但是當我嘗試將它變成一個函數以確定用戶點擊哪個圖像時,我遇到了一個問題。
mapIcon[0].click(function(){
var selectedMap = ($('<img src="img/' + maps[0].image + '">'));
gameplayScreen.append(selectedMap);
mapSelectScreen.fadeOut(500, function() {
gameplayScreen.fadeIn(500);
gameplayScreen.show();
});
});
mapIcon[1].click(function(){
var selectedMap = ($('<img src="img/' + maps[1].image + '">'));
gameplayScreen.append(selectedMap);
mapSelectScreen.fadeOut(500, function() {
gameplayScreen.fadeIn(500);
gameplayScreen.show();
});
});
mapIcon[2].click(function(){
var selectedMap = ($('<img src="img/' + maps[2].image + '">'));
gameplayScreen.append(selectedMap);
mapSelectScreen.fadeOut(500, function() {
gameplayScreen.fadeIn(500);
gameplayScreen.show();
});
});
gameplayScreen.click(function() {
gameplayScreen.fadeOut(500, function() {
mapSelectScreen.fadeIn(500);
mapSelectScreen.show();
gameplayScreen.empty();
});
});
我想在地圖上點擊,然後把它帶我去gameplayScreen,然後再次單擊帶我回喜歡這些功能做。
我認爲這與使用for循環和迭代點擊a'la mapIcon[i].click(function(){/*foo*/})
有關,但我無法使其工作。我想它不喜歡數組元素.click
。有任何想法嗎?這是當前所有功能中的嘗試。
for (i=0; i< mapIcon.length; i++){
mapIcon[i].click(function(){
var selectedMap = ($('<img src="img/' + mapIcon[i].image + '">'));
gameplayScreen.append(selectedMap);
mapSelectScreen.fadeOut(500, function() {
gameplayScreen.fadeIn(500);
gameplayScreen.show();
console.log(mapIcon[i].name);
});
});
}
讀http://stackoverflow.com/questions/10131647/binding-listeners-for-loop-variable-scope-miscomprehension –
你如何填充數組? – sbonkosky