在下面使用 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.