在下面使用 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')
and都可以显示为prop("checked")
真,但 `attr("checked") 将显示未定义。我以为他们应该是一样的?(即使我们手动点击复选框,也是一样的效果)。
另外,如果我checked
在 HTML 中设置,以便默认选中复选框(http://jsfiddle.net/UcGyM/1/),现在attr("checked")
将打印出checked
两个触发,所以它无法判断是否是否检查过——这是为什么呢?(奇怪的是两个都显示checked
,但是$("input").attr("checked", true);
or$("input").attr("checked", false);
可以打开或关闭。)
一个相关的问题是,如果我们要坚持使用attr("checked")
,这是否意味着在 HTML 中,它必须具有checked
属性:<input type="checkbox" checked>
,如果是,它如何指定属性但默认为关闭?(因为checked="false"
or or checked=""
or checked="0"
will not make it unchecked by default.