jQuery获取元素属性值为undefined

该博客讨论了在jQuery中attr()和prop()方法的区别。当尝试获取或设置表单元素的属性,如checked、selected等,应当使用prop()而不是attr()。attr()适合用于处理一般的HTML属性,而prop()专门设计来处理表单属性。jQuery官方推荐使用prop()来操作具有真值假值的属性,因为attr()可能无法正确获取这些属性的状态。

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

问题

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title></title>
    <script src="/js/jquery-1.12.4.min.js"></script>
    <script>
        $(function () {
            $('input[type="radio"]').change(function(){
                var bool = $(this).attr("checked");
                //alert(typeof(this));
                alert(typeof(bool));
                if(bool){
                    $("p").text("你选择的是:" + $(this).val());
                }
            })
        })
    </script>
</head>
<body>
    <div>
        <label><input type="radio" name="fruit" value="苹果" />苹果</label>
        <label><input type="radio" name="fruit" value="香蕉" />香蕉</label>
        <label><input type="radio" name="fruit" value="西瓜" />西瓜</label>
    </div>
    <p></p>
</body>
</html>

选择radio后发现typeof(bool)underfined,也就是attr方法不能获得这个checked属性。

解决

attr改为prop就行。

在这里在线测试

更多方法参考这篇博客

总结

prop()方法跟attr()方法相似,都是用来获取或设置元素的HTML属性的。不过两者也有着本质上的区别。

jQuery官方建议:具有truefalse这两种取值的属性,如checkedselecteddisabled等建议使用prop()来操作,而其他的属性都建议使用attr()来操作。

prop()方法的出现就是为了弥补attr()方法在表单属性操作中的不足。记住一句话就行了:如果某个属性没法使用attr()获取或设置,改换prop()就可以搞定。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值