如果选中表格复选框,请取消选中其他表格复选框?

时间:2014-09-23 17:12:39

标签: javascript jquery checkbox this checked

我有很多表,当一个复选框被选中时 - 所有其他表都应该清除。您可以在此表中检查任意数量的复选框,但只能一次检查一个表中的复选框。 我该怎么做呢?我想尽可能避免使用id,因为我有8个表。

http://jsfiddle.net/69o3e5y4/

$('input[type=checkbox]').on('click', function () {

});

3 个答案:

答案 0 :(得分:5)

你可以:

  1. 获取收录表$(this).closest("table")
  2. 然后获取所有其他表:$("table").not($table)
  3. 最后,取消选中这些表中的所有输入:... .prop("checked", false)
  4. 这应该给出一些像这样的代码:

    $('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);
               }
            });   
     });

}

http://jsfiddle.net/csdtesting/69o3e5y4/8/

答案 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);
                });
            }
        });