jQuery学习之prop和attr的区别

本文探讨了在JQuery中使用.prop()与.attr()的区别,特别是在处理checkbox元素的checked属性时的不同表现。通过示例代码展示了两种方法如何分别返回布尔值和字符串值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天在用JQuery的时候发现一个问题用.attr("checked")获取checkbox的checked属性时选中的时候可以取到值,值为"checked"但没选中获取值就是undefined.

为什么jquery 1.6+增加了.prop()方法,因为在有些浏览器中比如说只要写disabled,checked就可以了,而有的要写成disabled ="disabled",checked="checked"。所以,从1.6开始,jq提供新的方法“prop”来获取这些属性。
以前我们使用attr获取checked属性时返回"checked"和"",现在使用prop方法获取属性则统一返回true和false。

看些例子
<script>         $(function () {             var checked01prop = $('.check01').prop('checked');             var checked01attr = $('.check01').attr('checked');             console.log('checked01prop = ' + checked01prop);             console.log('checked01attr = ' + checked01attr);             var checked02prop = $('.check02').prop('checked');             var checked02attr = $('.check02').attr('checked');             console.log('checked02prop = ' + checked02prop);             console.log('checked02attr = ' + checked02attr);
 </script>
<body>
    <!--checked = 'checked' 可以省略为checked-->
    <input type="checkbox" class="check01" checked>
    <input type="checkbox" class="check02">
</body>
         
       })
 运行结果如下:
显然,布尔值比字符串值让接下来的处理更合理。
如果你有JS性能洁癖的话,显然prop的性能更高,因为attr需要访问DOM属性节点,访问DOM是最耗时的。这种情况适用于多选项全选和反选的情况。

大家都知道有的浏览器只要写disabled,checked就可以了,而有的要写成disabled ="disabled",checked="checked",比如用attr("checked")获取checkbox的checked属性时选中的时候可以取到值,值为"checked"但没选中获取值就是undefined

jq提供新的方法“prop”来获取这些属性,就是来解决这个问题的,以前我们使用attr获取checked属性时返回"checked"和"",现在使用prop方法获取属性则统一返回true和false。

那么,什么时候使用attr,什么时候使用prop??
   // 如果是自带属性 用prop
   // 自定义的用attr
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值