onclick函数中表中的Json数据显示在单独的div

时间:2017-04-11 10:17:36

标签: javascript jquery json

当我点击桌面时,我试图将我的表中使用的数据用于div中。问题是,根据我的JSON数据,我的脚本中有多个表。所以我的JSON由对象组成。例如: 我的表格如下:

data.forEach(function(somedata){

return '<table><tr><td>'+somedata.something+'</td></tr></table>';

});

现在我已尝试让onclick在这种情况下工作,但我似乎无法弄清楚如何。我不想使用在foreach中呈现的特定ID,如:

var i=0;
data.forEach(function(somedata){
i++;
return '<table id="'.id.'"><tr><td>'+somedata.something+'</td></tr></table>';

});

变量some​​data由一个对象组成,因此我无法在表格的html代码中进行onclick,并将数据发送到其中。

所以somedata看起来像这样,但json编码:

somedata{
[0]=>array(
    'something'=>'test',
    'theobject'=>array(...)
),
[1]=>array(etc...)

}

现在我想要的是,只要点击属于右侧theobject的表格,就可以从单独的div中获取somedata中的数据。

我一直在考虑点击这个jquery但是我需要在表格中找到特定的ID(如果这是唯一可行的解​​决方案,那么我会采取它)。我不能用this做点什么吗?或者在我的代码中提交数据的同时发送数据我当然可以到达somedata.theobject

我想我觉得这有点太难了。我呢?

2 个答案:

答案 0 :(得分:0)

有几种方法可以解决这个问题。我们可以使用forEach函数,而不是使用jQuery.map函数,因为您已经表明您可以使用jQuery: - )

var $els = $.map(data, function(somedata, i){
    var $el = $('<table><tr><td>'+somedata.something+'</td></tr></table>')
        .click(function(e) {
            populateDivWithData(somedata.theobject);
        });
    return $el;
});

.clickeach的调用将为数据中的每个项目创建单独的点击处理程序;然后,每个点击处理程序都可以访问相关的theobject值。

编辑:感谢@Loko提供关于.forEach内置

的提醒

答案 1 :(得分:0)

你可以在onclick函数中传递它,如

return '<table onclick=makeObject(this)><tr><td>'+somedata.something+'</td></tr></table>';

然后使用该函数获取数据

function makeObject(that){
    var tbl = $(that).find('tr').map(function() {
       return $(this).find('td').map(function() {
       return $(this).html();
      }).get();
    }).get();
}