簡體   English   中英

jQuery選中所有不起作用的復選框

[英]jQuery check all not working on checkboxes

我正在編寫一些允許以下操作的代碼:

1.)如果用戶選中一個復選框,它將更改父級<tr>以選擇一個類(也可以取消選中並刪除該類)

2.)任何已選中的復選框都會在文檔加載時添加該類

3.)如果用戶檢查#checkall輸入,則所有輸入都將變為選中狀態並添加所選類別(如果再次選中,則它將取消選中所有類別並刪除該類別)

這是我到目前為止的代碼:

$("table input[name=choose]:checked").each(function()
    {
        $(this).closest("tr").addClass("selected");
    });

    $("table input[name=choose]").live("change", function()
    {
        $(this).closest("tr").toggleClass("selected");
    });

    if ($('#checkall:checked') ==  true)
    {
        $('#checkall').live("click", function()
        {
            $('table input[name=choose]').attr('checked', false);
            $('table input[name=choose]').closest("tr").toggleClass("selected");              
        });
    }
    else
    {
        $('#checkall').live("click", function()
        {
            $('table input[name=choose]').attr('checked', true);
            $('table input[name=choose]').closest("tr").toggleClass("selected");
        });
    }

前兩個可以正常工作,但是數字3不會取消選中復選框...任何想法為何? 但是上課的部分工作正常嗎?

謝謝

我猜它總是會碰到else塊(您已經調試了嗎)?

嘗試編寫以下代碼檢查復選框是否被選中:

if ($('#checkall').attr('checked'))

因為if ($('#checkall:checked') == true)始終為false。

要么使用

if ($('#checkall').is(':checked'))

要么

if ( $('#checkall:checked').length )

評論后更新

將整個第三部分( 所有if / else )替換為

$('#checkall').live("change", function()
        {
            $('table input[name=choose]')
                 .attr('checked', this.checked)
                 .closest("tr")
                 .toggleClass("selected", this.checked);              
        });

演示在http://jsfiddle.net/gaby/KqwsZ/1/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM