2013-01-01 33 views
2

我必須形成像如何創建JSON列表?

var SelectedRows= { 
     "item1":{"id":"1","name":"jhon","phone":"6699"}, 
     "item2":{"id":"2","name":"Aron","phone":"7799"}, 
     "item2":{"id":"3","name":"Iyan","phone":"8899"}, 
     } 

一個JSON對象複選框單擊事件,我需要的網格行值添加到列表JSON。我使用此代碼嘗試:

var SelectedRows={}; 

$(this).delegate(":checkbox", "click", function() {   
    var j=0; 
    var item=[]; 
    SelectedRows[item]={};  *//I guess this line creating problem*  
    $(this).closest("tr").find("td:visible").each(function(){    
     var key=headerRow[j]["i"];    
     if(j == 0) 
     {    
     } 
     else 
     { 
      SelectedRows[item][key]=$(this).text(); 
     } 
     j=++j; 
    }); 

後多複選框,單擊事件發生,SelectedRows只包含最後點擊事件的數據。

如何獲取所有複選框單擊事件數據?

+0

這是一個有趣的JSON對象,你」重新嘗試創造。爲什麼不使用數組而不是使用虛擬鍵* item1 *,* item2 *,* item3 *等添加元素?爲什麼每個項目只包含一個只有一個元素的數組? – Codo

+0

'var item [];'是無效的Javascript,你想要做什麼? – Barmar

+0

@Barmar,這是錯字錯誤,我編輯了它。 –

回答

1

通過var item = 'item'+(j+1);更換var item[];和結果想..

var SelectedRows= { 
    "item1":{"id":"1","name":"jhon","phone":"6699"}, 
    "item2":{"id":"2","name":"Aron","phone":"7799"}, 
    "item2":{"id":"3","name":"Iyan","phone":"8899"}, 
    } 
0

我這樣做。它正在顯示上面的格式。

var SelectedRows=[]; 
var rowCount=1; 

使用額外的計數變量從項目1,項目2,項目3等。

$(this).delegate(":checkbox", "click", function() { 
     var j=0; 
     var item={};  
      $(this).closest("tr").find("td:visible").each(function(){ 
       var key=headerRow[j]["i"]; 
        if(j == 0){ } 
        else { 
          item[key]=$(this).text(); 
         } 
       j=++j; 
      }); 
      SelectedRows["item"+rowCount]=item; 
      rowCount=++rowCount; 
    }); 
3

您可以創建一個JSON數組這樣

var SelectedRows= [ 
    item1:{id:"1",name:"jhon",phone:"6699"}, 
    item2:{id:"2",name:"Aron",phone:"7799"}, 
    item2:{id:"3",name:"Iyan",phone:"8899"} 
] 
+0

+1幫助我節省了一天的時間。 – Rushi