这可能是一个微不足道的问题,但我有点困惑如何提取列数据&构建一个对象。
该表本质上是动态的,基于提供的数据生成。
格式是这样的
<tr>
<td> Label </td>
<td>
<input type = "radio" value="yes"/> YES
<input type = "radio" value="no"/> NO
<textarea>
</td>
<td>
<input type = "radio" value="yes"/> YES
<input type = "radio" value="no"/> NO
<textarea>
</td>
// This structure can repeat
...
...
</tr>
// Rows will repeat themselves
到目前为止我已经记下了这个
$(function () {
$('#submit').click(function () {
var i = 0;
var t = document.getElementById('table');
$("#table tr").each(function () {
var columns = $(this).find('td');
/* how to extract column data here?, so that I construct
a column object and keep looping for the other columns
});
});
我的JSON需要像这样: [{label:data,isPresent:data,value:data},{..},{..}]
我无法一次获取两个列()的数据,然后循环接下来的两列。
答案 0 :(得分:1)
从你的问题来看,我认为你是jQuery的新手,所以我会给你一个简单的解决方案,可以在很多方面使用。
我建议你在HTML中添加类。这样,我们就可以识别表行的所有属性,而不管HTML元素在tr-tag中的位置或数据放入的标记类型:
<tr>
<td class="item-label"> Label </td>
<td>
<input class="item-option-yes" type="radio" value="yes"/> YES
<input class="item-option-no" type="radio" value="no"/> NO
</td>
... other cells with data ...
</tr>
... other rows ...
在你的每个函数中,你可以结合$(this)和find() - 函数来构造你的JSON对象
$(function () {
$('#submit').click(function () {
var itemArray = [];
$("#table tr").each(function (index) {
var itemData = {
"label": $(this).find(".item-label").text(),
"isPresent": $(this).find(".item-option-yes")[0].checked,
"value": $(this).find(".some-other-class").text()
};
itemArray.push(itemData);
});
});
有关find,$(this)和each-functions的更多信息,请查看jQuery网站