5

我必须形成一个 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 列表中。我正在尝试使用此代码:

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仅包含最后一次单击事件数据。

如何获取所有复选框单击事件数据?

4

3 回答 3

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"}
]
于 2013-01-02T09:38:07.987 回答
1

替换var item[];var item = 'item'+(j+1);结果应该喜欢..

var SelectedRows=   {
    "item1":{"id":"1","name":"jhon","phone":"6699"},
    "item2":{"id":"2","name":"Aron","phone":"7799"},
    "item2":{"id":"3","name":"Iyan","phone":"8899"},
    }
于 2013-01-01T09:15:28.317 回答
0

我是这样做的。它显示的正是上述格式。

var SelectedRows=[];
var rowCount=1;

从 item1、item2、item3 等使用额外的计数变量。

    $(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;
  });
于 2013-01-01T10:18:45.640 回答