【jQuery】對於複選框操作的attr與prop,jqueryattrprop

來源:互聯網
上載者:User

【jQuery】對於複選框操作的attr與prop,jqueryattrprop

這個是在jQuery1.6版本之後出現的鬼東西。受影響的主要有下拉式清單select與複選框checkbox。眾所周知,在jQuery中可以用attr()取出節點的屬性,然而對於checkbox卻不是這樣了,比如我要取出其是否被選中的屬性checked,attr("checked")去取沒有選中的複選框是undefinded的,只能取出被選中複選框的屬性。這個問題,導致我在一個條件判斷中忙活了比較久的事件。查了一下發現,在jQuery1.6版本之後,你取複選框有沒有被選中,要用prop

舉個例子還說明這個問題,如下代碼,設定兩行完全一模一樣的東西,兩按鈕對一複選框進行操作,一個行內文本,用來顯示Jquery的屬性,唯一不同的是一個用了attr屬性,一個用了prop屬性:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>attr與prop</title><script type="text/javascript" src="js/jquery-1.11.1.js"></script></head><body>attr:<button id="selected1"/>選中複選框 </button><button id="unselected1"/>不選中複選框 </button><input type="checkbox" id="checkBox1" /><span id="tip1"></span><br/>prop:<button id="selected2"/>選中複選框 </button><button id="unselected2"/>不選中複選框 </button><input type="checkbox" id="checkBox2" /><span id="tip2"></span><br/></body></html><script type="text/javascript">$("#selected1").click(function(){$("#checkBox1").attr("checked",true);$("#tip1").html($("#checkBox1").attr("checked"));});$("#unselected1").click(function(){$("#checkBox1").attr("checked",false);$("#tip1").html($("#checkBox1").attr("checked"));});$("#selected2").click(function(){$("#checkBox2").prop("checked",true);$("#tip2").html($("#checkBox2").prop("checked"));});$("#unselected2").click(function(){$("#checkBox2").prop("checked",false);$("#tip2").html($("#checkBox2").prop("checked"));});</script>
運行效果卻得到如下所示,極其令人驚訝的是,雖然同樣能夠改變複選框的值,使用attr方法去操作的複選框的第一行,其值一直沒有改變。無論選中還是沒有選中一直是checked的狀態,而第二行使用了prop,選中是true,沒選中是沒有選中的undefinded,這才能真正用於if條件的判斷。使用attr取複選框是否被選中,放到if中,只會對頭兩次選擇有效,之後就失效了。因此,以後再jQuery搞複選框,沒什麼事還是用prop。


jQuery你丫為何各個版本的代碼會不同呢?為何不能像Javascript一樣,能取就能改呢?

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.