我有很多表,当一个复选框被选中时 - 所有其他表都应该清除。您可以在此表中检查任意数量的复选框,但只能一次检查一个表中的复选框。 我该怎么做呢?我想尽可能避免使用id,因为我有8个表。
$('input[type=checkbox]').on('click', function () {
});
答案 0 :(得分:5)
你可以:
$(this).closest("table")
$("table").not($table)
... .prop("checked", false)
。这应该给出一些像这样的代码:
$('input[type=checkbox]').on('click', function () {
var $table = $(this).closest("table"); // Current table
$("table").not($table) // Other tables
.find("input[type=checkbox]:checked") // Checked input of these tables
.prop("checked", false); // Uncheck them
});
看到这个小提琴:http://jsfiddle.net/69o3e5y4/2/
答案 1 :(得分:0)
这个jquery没有任何id工作:
$('table').each(function(index){
$(this).find('input').each(function()
{
$(this).on('click', function () {
clearThisTablesCheckboxes(index);
});
});
});
function clearThisTablesCheckboxes(position){
$('table').each(function(index){
$(this).find('input').each(function()
{
if(position != index)
{
var prop=false;
$(this).prop('checked',prop);
}
});
});
}
答案 2 :(得分:-1)
我没有尝试过,但我会使用课程。因此,Table1中的所有复选框都是类“Table1”,Table2中的所有复选框都在“Table2”类等中。
然后,在您已经拥有的事件处理程序中,您可以遍历页面上的每个复选框,如果它们的类与单击的类不匹配,则取消选中所有复选框。
例如(再次,未经测试):
$("input[type=checkbox]").click(function () {
if ($(this).prop("checked") == true){
var CurrentClass = $(this).prop("class");
$("input[type=checkbox]").each(function () {
if ($(this).prop("class") != CurrentClass)
$(this).prop("checked", false);
});
}
});