2010-02-21 71 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

相关问题