2010-08-22 51 views
2

我一直在使用非常簡約的jquery管理區域菜單進行無所事事。關鍵是我想讓jQuery用不同的ID構建3個相同的菜單。我設法做到這一點,創建一個函數,並用不同的變量調用它3次,但我想問我關於這個可愛的社區的第一個問題:Jquery:將3個數組轉換爲具有不同ID的不同對象

什麼是創建3個元素的最簡約和有效的方式不同的ID和內容?

d=['Varer','Kate','Produ','Tilbud','Sider','Info','Pref']; 

e=['Varer1','Kate1','Produ1','Tilbud1','Sider1','Info1','Pref1']; 

f=['Varer2','Kate2','Produ2','Tilbud2','Sider2','Info2','Pref2']; 

function menu(){ 
var e=''; 
$.each(d,function(a,b){e+='<a href=#'+b+'>'+b+'</a>'}); 
$('body').append('<div id=c>'+e+'</div>');} 
menu(); 

在此先感謝

回答

0

如何:http://jsfiddle.net/M6Upv/

d = ['Varer', 'Kate', 'Produ', 'Tilbud', 'Sider', 'Info', 'Pref']; 
e = ['Varer1', 'Kate1', 'Produ1', 'Tilbud1', 'Sider1', 'Info1', 'Pref1']; 
f = ['Varer2', 'Kate2', 'Produ2', 'Tilbud2', 'Sider2', 'Info2', 'Pref2']; 

function menu(i, array) { 
    var e = ''; 
    $.each(array, function(a, b) { e += '<a href=#' + b + '>' + b + '</a>'; }); 
     // Use the "i" value to make sure the container ID is unique 
    $('body').append('<div id=c' + i + '>' + e + '</div>'); 
} 
    // Place your arrays in an array, and call a separate .each() 
    // with your menu() function as the callback. 
$.each([d, e, f], menu);​ 
+0

這是一個很棒的網站,感謝您的鏈接和幫助。 – 2010-08-22 21:59:21

+0

@Ulrik M - 我希望我能理解你的問題。看起來像你試圖避免多次調用你的'menu()'函數。另外,請不要忘記單擊最有幫助的左邊的複選標記以「接受」答案。 – user113716 2010-08-24 15:46:50

2

你的方法其實是非常好的。請記住以下這些問題:

缺少var關鍵字將使變量全局。

var d = ['Varer' ..]; 

保持獨立於外部環境的功能。傳遞數組作爲參數。

function menu(array) { 

} 

將id作爲參數傳遞給當前似乎將所有div分配給id「c」的函數。

function menu(id, dataArray) { 

} 

每次將某些內容追加到字符串時,都會創建一個新字符串。更快的方法是將這些字符串添加到數組中並在最後加入它們。以下是記住以上所有要點的功能。

function menu(id, data) { 
    var links = $.map(data, function(value) { 
     return '<a href="#' + value + '">' + value + '</a>'; 
    }).get(); 

    var div = $('<div>', { 
     id: id, 
     html: links.join('') 
    }); 
    $('body').append(div); 
} 

簡約代碼並不意味着你應該使用一個字母的變量名稱。把它留給縮小器。

menu('firstId', d); 
menu('secondId', e); 
menu('thirdId', f); 
+0

感謝您的快速回復,非常感謝。 – 2010-08-22 21:53:15

相關問題