2010-02-21 109 views

回答

1

這裏有一種方法(需要較少的函數調用):

var myJson = {"ACT":"Australian Capital Territory","NSW":"New South Wales","NT":"Northern Territory","QLD":"Queensland","SA":"South Australia","TAS":"Tasmania","VIC":"Victoria"}; 

$.each(myJson,function(key,val) { 
    $('#mySelect').append('<option value="'+ key + '">' + val + '</option>'); 
}); 
+0

適用於此數據集,但在一般情況下,您需要使用HTML轉義來替換數據中的<<,'&'和'「字符,否則您的HTML注入會導致XSS安全問題。以避免HTML string-slinging when you can。 – bobince 2010-02-21 17:17:43

+0

@bobince - 我明白你的意思。調用'.val()'和'.text()'是否足以避免這個問題? – user113716 2010-02-21 17:29:00

+0

是的。 )'用於其他情況。 – bobince 2010-02-21 21:23:48

5

使用$ .each並遍歷所有元素。這應該工作:

$.each(jsonData, function(key, value) 
{ 
    $('<option></option>').val(key).text(value).appendTo('#yourSelectList'); 
}); 
+0

根據數據的大小,很多.append()操作可能很昂貴。創建一個佔位符數組並將.push()選項添加到它上面會更快,然後.append(myArray.join(''))只需要一次。 – MightyE 2010-02-21 16:47:19

+0

這是錯誤的。什麼是'this.code'和'this.name'?它根本不起作用。不知道爲什麼這是起牀投票。 – user113716 2010-02-21 17:08:58

+0

MightyE:如果我們談論HTML字符串,那隻會有任何意義。 (即使這樣,jQuery的append函數仍然需要逐個添加每個DOM節點,所以你不需要像這樣保存任何東西。) – bobince 2010-02-21 17:13:59

相關問題