好長時間沒用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/
參考文章