为什么jQuery不返回'checked'属性的值?
它总是返回'已检查',无论它是什么。
<div id='div' checked='checked_value'></div>
<script>
var attr_value = $('#div').attr('checked');
alert(attr_value);
// attr_value == 'checked' no matter what
</script>
没关系,在1.4中,但当我升级到1.8时,它完全弄乱了我的代码。我经常使用checked
属性。
答案 0 :(得分:1)
我相信更新版本的jQuery正确的语法是 -
$("element").prop('checked');
在特定情况下,属性和属性之间的差异非常重要。在jQuery 1.6之前,
.attr()
方法在检索某些属性时有时会考虑属性值,这可能会导致行为不一致。从jQuery 1.6开始,.prop()方法提供了一种显式检索属性值的方法,而.attr()则检索属性。
但是我相信你可能错误地使用了这个属性。通常,人们只会测试checked
选择器的存在。实际上只有两个州。选中并取消选中。通常,人们会使用这样的东西 -
$('.groupOfCheckboxes:checked')
这将返回已选中的所有匹配复选框的列表。您还在<div>
元素上使用了此属性。这不是有效的HTML。如果您希望跨浏览器获得最一致的结果,那么您应该坚持使用有效的标记。