我有一个checkboxes
列表,它会在选中时生成表格。每个表都有一个全checkbox
,点击后选择表的所有选项。所有checkboxes
都由同一个类引用,但具有不同的ID
s,具体取决于表。我正在尝试编写代码来获取生成的表的ID,并在我的select_all函数中使用此ID,这将允许ALL
checkbox
仅影响其各自的表的选项。< / p>
我目前拥有什么
所有复选框
<div class="Row">
<div id="topRow">
<input type="checkbox" name="tbl" class="tblall" id="all<?php echo $tables_index;?>" value="" />
<p >ALL</p>
</div>
所有功能
$(function () {
$(document).on("click", (".tblall"), function () {
var className = $("input:checkbox[name='tbl2']").attr('class');
if (this.checked) {
// Iterate each checkbox
$('.' + className).each(function () {
this.checked = true;
});
} else {
$('.' + className).each(function () {
this.checked = false;
});
}
});
});
我尝试了什么
我尝试将ALL复选框ID存储在变量中,并使用此变量来引用我的函数中的复选框,如下所示:
some function (){
var allID = $(".tball").attr('id');
store allID;
}
$(function () {
var allID = window.sessionStorage.getItem("allID");
$(document).on("click", ("#"+ allID), function () {
这不成功,因为它甚至没有选择任何表格的所有选项。
我还想过,如果在加载DOM时编写一个获取ID并调用函数的函数:
function all_Id() {
var allID;
if ($("input:checkbox[name='tbl[]']:checked")) {
allID = $("input:checkbox[name='tbl']").attr('id');
}
return allID;
}
$(document).ready(function () {
all_Id();
});
$(document).ajaxComplete(function () {
all_Id();
});
实现我想要的最佳方式是什么?
答案 0 :(得分:2)
我猜你需要这样的东西:
$(".tblall").on('change', function () {
$(this).closest('table').find(':checkbox').prop('checked', this.checked);
});
click
应用change
事件。change
事件发生时,遍历到父table
(如您所述)。checkboxes
:checkbox
选择器。checked
。this.checked
如果选中true
,则返回布尔值为false
。
这里有一个简短的例子:
$(".tblall").on('change', function() {
$(this).closest('table').find(':checkbox').prop('checked', this.checked);
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
<tr><td><input type='checkbox' class='tblall' />.tblall</td></tr>
<tr><td><input type='checkbox' /></td></tr>
<tr><td><input type='checkbox' /></td></tr>
<tr><td><input type='checkbox' /></td></tr>
<tr><td><input type='checkbox' /></td></tr>
<tr><td><input type='checkbox' /></td></tr>
</table>
&#13;
答案 1 :(得分:1)
试试这个:找到div中的所有tbl2
复选框并进行检查/取消选中
$(function () {
$(document).on("change", ".tblall", function () {
$(this).closest(".Row").find("input:checkbox[name='tbl2']").prop('checked',$(this).is(':checked'));
});
});
答案 2 :(得分:0)
您可以尝试使用JQuery&#39; parent-child selector。
所以,如果你给每个表一个唯一的id,那么你可以选择某个类的所有复选框,如下所示:
$("#table1 > .checkbox-class").each(function () {
this.checked = true;
});
希望有所帮助。
答案 3 :(得分:0)