问题
<!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官方建议:具有true
和false
这两种取值的属性,如checked
、selected
或disabled
等建议使用prop()
来操作,而其他的属性都建议使用attr()
来操作。
prop()
方法的出现就是为了弥补attr()
方法在表单属性操作中的不足。记住一句话就行了:如果某个属性没法使用attr()
获取或设置,改换prop()
就可以搞定。