2011-10-18 48 views
0

呈現多個選擇框我正在使用jquery的每個標記來從服務器呈現json數據作爲選擇框。例如:jquery模板每個標記:使用

$('#dogsBox').append( $.toxmpl("{{each dogs}}<option value='${$value.id}'>${$value.name}</option>{{/each}}",data) 

$('#catsBox').append( $.tmpl("{{each cats}}<option value='${$value.id}'>${$value.name}</option>{{/each}}",data) 

$('wolvesBox').append( $.tmpl("{{each wolves}}<option value='${$value.id}'>${$value.name}</option>{{/each}}",data) 

假設狗,貓和狼屬於另一物體動物,我該如何使這種通用?我應該替換「?????」在下面的腳本中。

動物:狗:......,貓:....,狼:...]

for(var animalName in animals){ 
    $("#"+animalName).append( $.tmpl("{{each ????? }}<option value='${$value.id}'>${$value.name}</option>{{/each}}", animals); 

} 

離開參數,每個空白,並通過動物[animalName]作爲沒有按數據」不管工作。

謝謝, 克里斯。 P.S:我正在使用它們,因爲它也可以用於對象,而不僅僅是列表。

+0

有關如何在每個標籤中使用$ item的任何提示也會有幫助嗎? – ChrisOdney

回答

1
for(var animalName in animals){ 
    $.each(animals[animalName], function(key, val){ 
      $("#"+animalName).append( $.tmpl("<option value='${id}'>${name}</option>", val) ); 
     } 
    ); 
+0

正如我在P.S中所提到的,我使用每個標籤,因爲它在對象和數組上迭代。因爲輸入的JSON數據可以是數組,也可以是對象或映射,並且腳本必須能夠遍歷它們中的任何一個,所以將它排除在外對我來說不是一種選擇。 – ChrisOdney

+0

但你循環'for',並且還循環'each'。你不能這樣做,因爲在'for'的每個元素中沒有數組。 –

+0

有,動物是包含貓,狗等的集合/數組,它們又是集合/數組/對象。 – ChrisOdney