gpt4 book ai didi

javascript - 使用 jQuery DataTables 时获取复选框长度的 jQuery 代码

转载 作者:行者123 更新时间:2023-12-03 09:22:56 25 4
gpt4 key购买 nike

使用 jQuery 和 jQuery DataTables 获取复选框长度时,我得到了错误的值。

HTML:

<table class="table table-bordered" id="dataTables-show-productList">
<thead>
<tr>
<th width="5px"><input type="checkbox" name="Select All" class="chkSelectAll" /></th>
<th>Product Information</th>
</tr>
</thead>
<tbody>
<c:forEach var="masterListVar" items="${masterList}">
<tr>
<td width="1%" align="center">
<c:if test="${masterListVar.saveFlag}">
<input type="checkbox" path="selectChecked" checked class="Projection_test" value="${masterListVar.productId}"/>
</c:if>
<c:if test="${!masterListVar.saveFlag}">
<input type="checkbox" path="selectChecked" class="Projection_test" value="${masterListVar.productId}"/>
</c:if>
</td>
<td>${masterListVar.productInfo}</td>
</tr>
</c:forEach>
</tbody>
</table>

JavaScript:

$('#dataTables-show-productList').DataTable({
width:'100%'
, responsive : true
, "bSort" : false
});


$('.chkSelectAll').click(function () {
$('.Projection_test').prop('checked', $(this).is(':checked'));
});

$('.Projection_test').click(function () {
if ($('.Projection_test:checked').length == $('.Projection_test').length) {
$('.chkSelectAll').prop('checked', true);
}
else {
$('.chkSelectAll').prop('checked', false);
}
});


$('#FavouriteList').click(function (e) {
var selectedRow = $('.Projection_test');

alert($('.Projection_test:checked').length);
e.preventDefault();
});

分页时,仅选择 12 个值。在警报中,当我保持在第 2 页并进行测试时,它仅显示 2。

最佳答案

原因

对于 jQuery DataTables,DOM 中仅存在可见行。这就是为什么使用 jQuery $() 方法访问复选框会为您提供 2 个节点。

解决方案

要选择复选框(包括 DOM 中不存在的复选框)并考虑到当前搜索查询,请使用以下代码:

// Select all available rows with search applied    
var rows = $('#dataTables-show-productList').DataTable()
.rows({ 'search': 'applied' })
.nodes();

// Checked checkboxes
console.log($('.Projection_test:checked', rows).length);

// All checkboxes
console.log($('.Projection_test', rows).length);

您需要在所有点击事件处理程序中使用此逻辑:$('.chkSelectAll').click$('.Projection_test').click$('#FavouriteList').click.

注释

jQuery DataTables 还具有 $()允许对整个表执行 jQuery 选择操作的方法。但是,它不允许过滤掉应用了搜索的行。

请参阅我们的文章 jQuery DataTables – How to add a checkbox column有关如何在使用 jQuery DataTables 时使用复选框的更多信息。

关于javascript - 使用 jQuery DataTables 时获取复选框长度的 jQuery 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31785112/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com