我有一系列的標題/正文模式的div,點擊標題將顯示正在討論的正文。jQuery:設置點擊數組循環
這一切發生與準備。點擊頁面上初始化...
,而不是做這個(工作正常,但它是一個痛苦):
$('#show_fold_ping').click(function(){ ShowArea('#fold_ping') });
$('#show_fold_http').click(function(){ ShowArea('#fold_http') });
$('#show_fold_smtp').click(function(){ ShowArea('#fold_smtp') });
$('#show_fold_pop3').click(function(){ ShowArea('#fold_pop3') });
...
我試圖做到這一點:
var Areas = ['ping','http', 'smtp', 'pop3'];
for(var i in Areas){
Area = '#show_fold_'+Areas[i];
$(Area).click(function(){ alert(Area); /* ShowArea(Area); */ });
}
我遇到的問題是,他們似乎都被初始化爲最後一個。 IE:如果pop3是最後一個,點擊#show_fold_ [any]會提示'#show_fold_pop3'。
這看起來應該很簡單。我錯過了一些顯而易見的東西,或者將字符串傳遞給我不知道的jQuery有問題嗎?
編輯:
嘿嘿,這些都是很大的。我讀了一些關於閉包和自我調用的函數,並且(kindasorta)得到它。
到目前爲止,我有這個,但點擊似乎沒有正確綁定。區域將以正確的值進行警報,但沒有點擊綁定。我是否仍然與Area有範圍問題,或者我完全不符合標準?
$(function(){
Areas = ['ping','http', 'smtp', 'pop3', 'imap', 'ftp', 'dns', 'tcp', 'database', 'seo'];
for(var i = 0; i < Areas.length; i++){
(function (Area) {
alert(Area);
$("#show_fold_"+Area).click(function(){ alert('x'); });
})(Areas[i]);
}
});
不應該$(「#fold _」+ Area).click(...)是$(「#show_fold _」+ Area).click(...)? – 2009-01-30 03:33:18
是的!謝謝 - 就是這樣。所以專注於我去語義上的語法盲= o) – Eli 2009-01-30 08:20:39