<分区>
在以下代码中使用 jQuery:
$("input").change(function(evt) {
console.log("change event handler invoked", evt);
console.log($("input").is(':checked'));
console.log($("input").attr("checked"));
console.log($("input").prop("checked"));
});
$("input").trigger("click");
$("input").trigger("click");
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<input id="the-input" type="checkbox">
is(':checked')
和 prop("checked")
都可以显示 true 但 `attr("checked") 将显示未定义。我以为他们是一样的? (即使我们手动点击checkbox也是一样的效果)。
此外,如果我设置 checked
在 HTML 中,默认情况下选中复选框 ( http://jsfiddle.net/UcGyM/1/ ),现在 attr("checked")
将打印出 checked
对于这两个触发,所以它无法判断它是否被选中——这是为什么? (同样奇怪的是,两者都显示 checked
,但是 $("input").attr("checked", true);
或 $("input").attr("checked", false);
可以打开或关闭它。)
一个相关的问题是,如果我们想坚持使用 attr("checked")
, 这是否意味着在 HTML 中,它必须有 checked
属性:<input type="checkbox" checked>
,如果是这样,它如何指定属性但默认为关闭? (因为 checked="false"
或 checked=""
或 checked="0"
默认情况下不会取消选中。