Jquery 實現checkbox全選方法,jquerycheckbox

來源:互聯網
上載者:User

Jquery 實現checkbox全選方法,jquerycheckbox

昨天早上有寫到怎麼利用Jquery實現全選

根據大家的意見對程式中一些寫法不好的地方進行了修改,也是本人水平有限,存在各種考慮不到的地方。

文章最後我提出了一個問題,要寫一個通用的方法來調用,於是就有了現在的這篇文章,晚上回到家,我就寫出了效果

下面的例子可以供大家討論學習,如果覺得不錯也可以直接應用到項目中。

1:為什麼要寫這個方法

   網上實現一句話全選全不選的有很多,但是好像都忽略了一個問題,全選的checkbox可以控制下面的子checkbox,但是下面的子checkbox應該也可以控制上面的全選,這樣就有了我的這個方法。

2:開發過程:要實現通用就要解決2個問題,怎麼分組,怎麼判斷組裡面哪個checkbox為全選,我想了想,覺得用name分組可以,

用class來判斷是否是需要全選的checkbox組。先找到所有class為需要全選的,再找出name屬性,根據name屬性就可以找到其他的子checkbox,只要找到元素就可以進行操作了

3:檔案,下面是我實現的js,儲存為xs_checkbox_all.js

複製代碼 代碼如下:
$(document).ready(function () {
    var xsChk = "xsChk";//定義的樣式
    var xsChkAll = "input[type='checkbox'][class='" + xsChk + "'][name]";//所有定義此樣式的checkbox
    $(xsChkAll).each(function () {
        var name = $(this).attr("name");
        name = "input[type='checkbox'][class!='" + xsChk + "'][name='" + name + "']";//此全選框下面的子checkbox
        $(this).click(function () {
            $(name).attr("checked", $(this)[0].checked);
        })
        var xschk = $(this);
        $(name).click(function () {
            var IAll = $(name).length; //此子項目下所有checkbox的個數
            var IChk = $(name + ":checked").length; //此子項目下所有勾選checkbox的個數
            var isAllChecked = true; //是否是全選
            if (IAll != IChk) {
                isAllChecked = false;
            }
            $(xschk).attr("checked", isAllChecked);
        });
    });
});

頁面使用

複製代碼 代碼如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
</head>
<body>
    <script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.8.0.js" type="text/javascript">
    </script>
    <script src="xs_checkbox_all.js" type="text/javascript"></script>
    <fieldset>
        <legend>全選one</legend>
        <input type="checkbox" class="xsChk" name="chk" />
        全選
    <div>
        <input type="checkbox" name="chk" />
        1<br />
        <input type="checkbox" name="chk" />
        2<br />
        <input type="checkbox" name="chk" />
        3<br />
        <input type="checkbox" name="chk" />
        4<br />
    </div>
    </fieldset>
    <fieldset>
        <legend>全選two</legend>
        <input type="checkbox" class="xsChk" name="chk1" />
        全選2
    <div>
        <input type="checkbox" name="chk1" />
        11<br />
        <input type="checkbox" name="chk1" />
        22<br />
        <input type="checkbox" name="chk1" />
        33<br />
        <input type="checkbox" name="chk1" />
        44<br />
    </div>
    </fieldset>
</body>
</html>

可以達到效果,如果有什麼最佳化的地方,請大家提出,我會做的更好,謝謝大家了,以上就是本文的全部內容了,希望大家能夠喜歡。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.