jQuery没有显示.attr('checked')

时间:2012-11-10 01:36:35

标签: jquery

为什么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>

http://jsfiddle.net/BbRmH/2/

没关系,在1.4中,但当我升级到1.8时,它完全弄乱了我的代码。我经常使用checked属性。

1 个答案:

答案 0 :(得分:1)

我相信更新版本的jQuery正确的语法是 -

$("element").prop('checked');
  

在特定情况下,属性和属性之间的差异非常重要。在jQuery 1.6之前,.attr()方法在检索某些属性时有时会考虑属性值,这可能会导致行为不一致。从jQuery 1.6开始,.prop()方法提供了一种显式检索属性值的方法,而.attr()则检索属性。


但是我相信你可能错误地使用了这个属性。通常,人们只会测试checked选择器的存在。实际上只有两个州。选中并取消选中。通常,人们会使用这样的东西 -

$('.groupOfCheckboxes:checked')

这将返回已选中的所有匹配复选框的列表。您还在<div>元素上使用了此属性。这不是有效的HTML。如果您希望跨浏览器获得最一致的结果,那么您应该坚持使用有效的标记。