2010-06-03 67 views
2

我有一個帶增量數字的選擇框列表,使用jquery填充來自json字符串的選擇框

<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中這樣做呢?

感謝

+0

你控制這種格式嗎?目前它不是有效的JSON,因此您將無法使用任何內置函數來解析它。它是通過AJAX獲取,還是直接在頁面中呈現? – 2010-06-03 13:26:10

+0

我控制JSON字符串。我是JSON新手,所以你能告訴我什麼是正確的格式?謝謝 – John 2010-06-03 14:18:05

回答

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對象...在這種情況下,它是一個數組,你可以循環,當然更快,沒有所有額外的工作。

+0

謝謝這正是我想要的。不過,我使用jquery 1.3.0,它沒有parseJSON函數。您的解決方案是否可以使用1.3.0?謝謝 – John 2010-06-03 14:36:09

+0

@John - 你如何得到JSON字符串?它是呈現在頁面中,還是通過AJAX獲取? – 2010-06-03 14:57:29

+0

就像上面那樣渲染到頁面中,即json = ??? 該字符串本身是使用服務器端腳本動態創建的。 – John 2010-06-04 08:15:36

相關問題