首页 > 代码库 > jq中.prop()与attr()的区别

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可以获取属性状态。

jq中.prop()与attr()的区别