我有一个表格,如:
<table id="myTable">
<thead>
<tr>
<td><input type="checkbox" id="selectall" /></td>
<td>Column 1</td>
<td>Column 2</td>
<td>Column 3</td>
<td>Column 4</td>
<td>Column 5</td>
</tr>
</thead>
<tbody>
</tbody>
</table>
Run Code Online (Sandbox Code Playgroud)
然后,javascript:
var myTable = jQuery('#myTable').dataTable({
/* options */
});
// Ajax request to populate:
jQuery.get('script.php', function(data){
eval("rows="+data);
for(var i=0;i<rows.length;i++){
myTable.fnAddData([
"<input type=\"checkbox\" id=\""+rows[i].uniqueID+"\" />",
rows[i].col1Txt,
rows[i].col2Txt,
rows[i].col3Txt,
rows[i].col4Txt,
rows[i].col5Txt ]);
}
});
Run Code Online (Sandbox Code Playgroud)
现在,我在根据选中的复选框更新表时遇到问题:
我正在尝试更新已检查的每一行中的第5个单元格.我正在使用fnUpdate
和fnGetPosition
(http://www.datatables.net/api)的组合.
fnGetPosition
期待td
or tr
元素,所以我想我只是抓住td
了复选框的父级:
var checkBoxes = jQuery('td > input:checked', myTable);
for(var i=0;i<checkBoxes.length;i++){
var parentTD = jQuery('#'+checkBoxes[i].id).parent(); //seems wrong?
var pos = myTable.fnGetPosition(parentTD);
//alert(pos[0]);
myTable.fnUpdate('Updated text', pos[0], 5);
}
Run Code Online (Sandbox Code Playgroud)
但我一定parentTD
做错了,因为pos
似乎永远不会有价值.
有任何想法吗?
你可以使用每个函数迭代jQuery对象,它比使用for循环更容易.
此外,我认为你可以选择你的选择器来获取td元素而不是检查已检查的输入.
它会更高效,因为它应该在每个操作中删除2个选择器.我没有尝试过,但这样的事情应该有效
var checkBoxes = jQuery('td:has(input:checked):not(#selectall)', myTable);
checkboxes.each(function(){
var pos = myTable.fnGetPosition($(this)); // Im not familiar with the plugin so the extra $() might be overkill
alert(pos) // maybe run this alert again, check if you get back an object/value? use firebug to debug and see its value?
myTable.fnUpdate('Updated text', pos[0], 5);
});
Run Code Online (Sandbox Code Playgroud)