2012-03-26 18 views
4

我有兩個JSON對象填充選擇具有OPTGROUP從兩個不同的JSON對象的JQuery

var type = [{"Id":1,"Name":"This is a name"}]; 
var subType = [{"Id":2,"ParentId":1,"Name":"This is a name"},]; 

subType.ParentId引用type.Id

我希望能夠以填充選擇具有

的jQuery
<SELECT> 
<OPTGROUP LABEL="type.Name" id="type.Id">   
<OPTION LABEL="subType.Name" value="subType.Id">subType.Name</OPTION>     
</OPTGROUP> 
</SELECT> 

回答

2

以下代碼僅使用「select」作爲jquery選擇器,因此它會影響頁面上的所有選擇框。 你可能想改變這一點。

下面的代碼也沒有處理選擇的選項之一,這可能是你應該注意的。

var type = [{"Id":1,"Name":"This is a name"}]; 
var subType = [{"Id":2,"ParentId":1,"Name":"This is a name"}]; 

var output = []; 
$.each(type, function(){ 
    //for each type add an optgroup 
    output.push('<optgroup label="'+this.Name+'">'); 
    var curId = this.Id; 

    //linear search subTypes array for matching ParentId 
    $.each(subType, function(k,v){ 
     if(this.ParentId = curId){ 

     output.push('<option label="'+this.Name +'" value="'+ this.Id +'">'+ this.Name +'</option>'); 

     //DELETE the element from subType array so the next search takes less time 
     subType.splice(k,1); 
    } 
    }); 
    output.push('</optgroup>'); 
}); 

//change the 'select' here to the id of your selectbox 
$('select').html(output.join('')); 
+0

我用你的方法,它部分工作,但你能告訴我什麼是錯誤的http://jsfiddle.net/kvkxX/? – 2012-03-26 04:12:21

+0

您的子類型的格式已更改。有一些額外的「[]」http://jsfiddle.net/kvkxX/1/ – 2012-03-26 04:34:26

+0

謝謝,作品不錯! :) – 2012-03-26 04:40:12