jquery如何判斷checkbox(復選框)是否被選中 全選 反選


好長時間沒用jq, 之前用的都是ng。
想着隨便參考一下,結果被坑。因為這篇文章是09年的,也和當時jq的版本號有關,但是為什么在百度排名第一,百度果然坑人,以后還是google

給出坑人文章的鏈接 http://www.cnblogs.com/yuzhongwusan/archive/2009/02/27/1399264.html

雖然已經解決,但是我決定重新寫一篇!!!

如何判斷checkbox是否選中?

文中說用 attr() 在實際判斷的時候都是不可用的,判斷不出來!!!
應該使用


if ($("#id").is(":checked")) {
    // 存在
} else {
    // 不存在
}

看到這里除了checked 還能判斷什么呢?

除了判斷checkout好像沒有看到hover,類似於這種應該如何判斷呢?

我們知道 如果$() 選擇器找到一個元素必定存在一個長度,因此我們也可以根據長度去判斷

if ($('#id:hover').length) {
    // 元素存在
} else {
    // 元素不存在
}

感覺有點跑偏了,回歸正題。。。

如果修改呢,很多人用的attr,removeAttr, 這些都是錯誤的,尤其是remove屬性后用attr無法加回來

這里應該使用pop,而不是attr

官方建議 具有 true 和 false 兩個屬性的屬性,如 checked, selected 或者 disabled 使用prop(),其他的使用 attr()

代碼如下

<form action="#">
    <p><label><input type="checkbox" id="checkAll"/> Check all</label></p>
    
    <fieldset>
        <legend>Loads of checkboxes</legend>
        <p><label><input type="checkbox" class="case" /> Option 1</label></p>
        <p><label><input type="checkbox" class="case" /> Option 2</label></p>
        <p><label><input type="checkbox" class="case" /> Option 3</label></p>
        <p><label><input type="checkbox" class="case" /> Option 4</label></p>
    </fieldset>
</form>
$("#checkAll").change(function () {
    $("input:checkbox").prop('checked', $(this).prop("checked"));
});

demo http://jsfiddle.net/mayufo/8dxx5fjk/

這時候傻呵呵以為你做完了就錯了!!!你還沒有考慮全選后取消一個和全部一個個選中后全選按鈕

與全選按鈕關聯

$('.case').on('click', function () {
	if ($('.case').length == $('.case:checked').length) {
        $('#checkAll').prop('checked', true);
   } else {
        $('#checkAll').prop('checked', false);
   }
})

demo http://jsfiddle.net/mayufo/8dxx5fjk/1/

參考文章

http://www.cnblogs.com/zhwl/p/3520162.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2024 CODEPRJ.COM