jquery数据表更新单元格
我有一个表格,如下所示:
<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>
然后,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 ]);
}
});
现在,我在根据选定的复选框更新表格时遇到问题:
我正在尝试更新选中的每行中的第 5 个单元格。我使用 fnUpdate
和 fnGetPosition
的组合(http: //www.datatables.net/api)。
fnGetPosition
需要 td
或 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);
}
但我一定是做错了,因为 pos
似乎从来没有值。
有什么想法吗?
I have a table set out like:
<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>
Then, the 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 ]);
}
});
Now, I am having trouble with updating the table based on which checkboxes are selected:
I am trying to update the 5th cell in each row that is checked. I am using a combination of fnUpdate
and fnGetPosition
(http://www.datatables.net/api).
fnGetPosition
expects the td
or tr
element, so I thought I'd just grab the parent td
of the checkboxes:
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);
}
But I must be doing parentTD
wrong since pos
never seems to hold a value.
Any ideas?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以使用 each 函数来迭代 jQuery 对象,它比使用 for 循环更容易。
另外,我认为您可以优化选择器来获取 td 元素,而不是获取已检查的输入。
它将提高性能,因为它应该在每个操作中删除 2 个选择器。
我还没有尝试过,但类似的东西应该有效
you can use the each function to iterate over a jQuery object, its easier than using the for loop.
Also, I think that you can optomise your selector to get you the td elements instead of geting the checked inputs.
It will be a lot more performant as it should remove 2 selectors in every operation.
I haven't tried it but something like this should work