使用jquery从json字符串填充选择框

时间:2010-06-03 12:56:13

标签: jquery

我有一个带有增量编号的选择框列表,以便识别,例如

<select id="my-select-0">
  <option value="1">first option</option>
  <option value="2">first option</option>
< option value="3">first option</option>
</select>
<select id="my-select-1">
  <option value="1">first option</option>
  <option value="2">first option</option>
  <option value="3">first option</option>
</select>
<select id="my-select-2">
  <option value="1">first option</option>
  <option value="2">first option</option>
  <option value="3">first option</option>
</select>

我有一个json字符串,我想用它来预先填充这些选项,例如。

json = "[{'my-select': 1}, 
         {'my-select': 3}]";
上面示例中的

my-select-0将设置为1,my-select-1设置为3。

我将如何在JQuery中执行此操作?

由于

1 个答案:

答案 0 :(得分:3)

我不确定完全您所追求的是什么,但是如果您将JSON更改为valid(双引号),则可以使用$.parseJSON()执行此操作循环,像这样:

var json = '[{"my-select": 1}, {"my-select": 3}]';​​​​​​​​​

var selects = $("[id^=my-select]"); //a class maybe? not sure of your options
$.each($.parseJSON(json), function(i, v) {
    selects.eq(i).val(v['my-select']);
});
​

You can see a working demo here


更新:由于您可以控制在页面中呈现它的方式,只需删除它所包含的初始引号,如下所示:

var json = [{'my-select': 1}, {'my-select': 3}];
var selects = $("[id^=my-select]");
$.each(json, function(i, v) {
    selects.eq(i).val(v['my-select']);
});

You can see it working here,JSON就是它的名字所说的,对象符号 ...所以只需使用它,不要使它成为字符串,只需直接输出/声明它作为一个javascript对象...在这种情况下,它是一个可以循环的数组,当然没有额外的工作就会更快。