原文鏈接:http://www.cnblogs.com/-run/archive/2011/11/16/2251569.html
Jquery1.6版本后attr的變化
Jquery1.6版本后 attr 改動后的效果:
jquery1.6+版本:
?
下文來自www.jquery.com The difference betweenattributes and properties can be important in specific situations.Before jQuery 1.6, the .attr()
method sometimes took property values into account when retrieving some attributes, which could cause inconsistent behavior.As of jQuery 1.6, the .prop()
method provides a way to explicitly retrieve property values, while.attr()
retrieves attributes For example, selectedIndex
,tagName
, nodeName
, nodeType
, ownerDocument
,defaultChecked
, and defaultSelected
should be retrieved and set with the.prop()
method. Prior to jQuery 1.6, these properties were retrievable with the.attr()
method, but this was not within the scope of attr
. These do not have corresponding attributes and are only properties.
elem.checked | true (Boolean) Will change with checkbox state |
---|---|
$(elem).prop("checked") | true (Boolean) Will change with checkbox state |
elem.getAttribute("checked") | "checked" (String) Initial state of the checkbox; does not change |
$(elem).attr("checked") (1.6) | "checked" (String) Initial state of the checkbox; does not change |
$(elem).attr("checked") (1.6.1+) | "checked" (String) Will change with checkbox state |
$(elem).attr("checked") (pre-1.6) | true (Boolean) Changed with checkbox state |
?
?
?
//勾選后輸出: //attr('checked'): checked //.prop('checked'): true //.is(':checked'): true//取消勾選輸出://.attr('checked'): undefined //.prop('checked'): false //.is(':checked'): false
jquery1.4 版本:
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <style> 5 p { margin: 20px 0 0 } 6 b { color: blue; } 7 </style> 8 <script src="../js/jquery-1.4.4.js"></script> 9 </head> 10 <body> 11 12 <input id="check1" type="checkbox" checked="checked"> 13 <label for="check1">Check me</label> 14 <p></p> 15 16 <script> 17 $("input").change(function() { 18 var $input = $(this); 19 $("p").html(".attr('checked'): <b>" + $input.attr('checked') + "</b><br>" 20 + ".is(':checked'): <b>" + $input.is(':checked') ) + "</b>"; 21 }).change(); 22 </script> 23 24 </body> 25 </html>
?
勾選后輸出: //attr('checked'): true //.prop('checked') 1.6后版本才有這個方法 //.is(':checked'): true 取消勾選輸出://.attr('checked'): false //.prop('checked')1.6后版本才有這個方法 //.is(':checked'): false
?
結論: attr('checked'): 在1.6后版本,所獲取的值是 "checked"/"underfined"? ,之前所獲得的值是"false"/"true"。截然不同
?
長知識了
出處:http://www.cnblogs.com/-run/
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。