2

在回答另一个问题时,我遇到了一些我认为非常奇怪的行为,我想知道这是否应该被视为一个错误,或者它是否在规范中的某个地方。

可以在这个jsFiddle观察到这种行为。

给定以下输入复选框元素:

<input type="checkbox" id="check" />

如果您要应用以下单击事件处理程序(我们将在此处使用 jQuery 以保持示例简洁):

$('#check').on('click', function (e) {
    console.log(this.checked);
    return false; //This prevents the default action from occurring.
});

您会在开发者控制台中看到:

true

这里实际发生的是复选框的状态在进入单击事件处理程序之前正在发生变化。但是,如果 click 事件处理程序阻止默认操作,则复选框的状态为reverted

这对我来说似乎是一个错误。如果不阻止默认操作,我希望复选框的状态仅在单击事件处理程序之后更新。

这是一个错误吗?这是否应该报告给不同的浏览器分销商?

(我目前只在 Chrome 中测试过)

4

1 回答 1

0

我不相信这是一个错误,但是如果您考虑一下,那么控制台的输出为什么是完全有道理的True

在第一次单击复选框时,该值设置为 true。它仅在您通过return false;语句打印到控制台后设置为 false。所以无论你尝试多少次,输出总是会说True

于 2014-01-17T21:10:45.360 回答