【发布时间】:2014-01-18 05:10:45
【问题描述】:
在回答另一个问题时,我遇到了一些我认为非常奇怪的行为,我想知道这是否应该被视为错误,或者它是否存在于规范中。
可以在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
这里实际发生的是复选框的状态在它进入点击事件处理程序之前发生了变化。但是,如果单击事件处理程序阻止默认操作,则复选框的状态为 reverted。
这对我来说似乎是一个错误。如果不阻止默认操作,我希望复选框的状态仅在单击事件处理程序之后更新。
这是一个错误吗?这是应该向不同的浏览器分销商报告的事情吗?
(我目前只在 Chrome 中测试过)
【问题讨论】:
-
@j08691 我在搜索中没有看到,谢谢。这些基本上是同义词,尽管我不同意那里接受的答案中表达的观点。虽然我了解这里正在进行的机制,并且可以想象一种可以按照观察到的方式实现它们的场景,但我不同意它们必须以这种方式实现。我觉得在处理完所有事件处理程序之后改变状态会更直观。即使使用事务系统,也只需在事务中交换评估顺序。
标签: javascript html checkbox browser-bugs