0

为什么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属性。

4

1 回答 1

1

我相信在最新版本的 jQuery 中,正确的语法应该是 -

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

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


但是,我相信您可能错误地使用了此属性。通常,只需测试checked选择器的存在。实际上只能有两种状态。检查和未检查。通常,人们会使用这样的东西 -

$('.groupOfCheckboxes:checked')

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

于 2012-11-10T01:38:28.150 回答