当我点击桌面时,我试图将我的表中使用的数据用于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>';
});
变量somedata由一个对象组成,因此我无法在表格的html代码中进行onclick,并将数据发送到其中。
所以somedata
看起来像这样,但json编码:
somedata{
[0]=>array(
'something'=>'test',
'theobject'=>array(...)
),
[1]=>array(etc...)
}
现在我想要的是,只要点击属于右侧theobject
的表格,就可以从单独的div中获取somedata
中的数据。
我一直在考虑点击这个jquery但是我需要在表格中找到特定的ID(如果这是唯一可行的解决方案,那么我会采取它)。我不能用this
做点什么吗?或者在我的代码中提交数据的同时发送数据我当然可以到达somedata.theobject
我想我觉得这有点太难了。我呢?
答案 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;
});
.click
内each
的调用将为数据中的每个项目创建单独的点击处理程序;然后,每个点击处理程序都可以访问相关的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();
}