jq中.prop()与attr()的区别
一,定义
prop() 方法设置或返回被选元素的属性和值。prop() 方法应该用于检索属性值
attr() 方法设置或返回被选元素的属性和值。如需检索 HTML 属性,请使用 attr() 方法代替。
固有属性用prop方法;
自定义属性用attr方法。
典型的例子:判断checkbox是否选中
$('#all').on('click',function(){ if($("#all").is(':checked')){ $(".childbox").each(function () { $(this).prop({checked:true}); }); }else{ $(".childbox").each(function () { $(this).prop({checked:false}); }); } })
如果这里用attr的话,就会出错。
因为可能会出现$("xxx").attr("checked") == undefind;
还有典型的例子,可以看这个:
<html> <head> <meta charset="utf-8"> <title>菜鸟教程(runoob.com)</title> <script src="http://cdn.static.runoob.com/libs/jquery/1.10.2/jquery.min.js"> </script> <script> $(document).ready(function(){ $("button").click(function(){ $("#p1").html("attr('checked'): " + $("input").attr('checked') + "<br>prop('checked'): " + $("input").prop('checked')); }); }); </script> </head> <body> <p><b>注意:</b>确认或取消选中该复选框,然后单击按钮刷新内容。</p> <button>查看attr() 和 prop() 的值</button> <br><br> <input id="check1" type="checkbox" checked="checked"> <label for="check1">Check me</label> <p id="p1"></p> </body> </html>
就个人理解来说,attr是获取标签的属性名,而prop可以获取属性状态。
只有在泥泞的道路上才能留下脚印