2

我有以下片段: http: //jsfiddle.net/L7rne/5/http://jsfiddle.net/L7rne/6/

事实证明,如果您在 click 事件处理程序中暂停执行脚本,则会选中该复选框,即使存在event.preventDefault().

我在 Firefox 7 和 Chrome 15 中尝试过,它们的行为方式相同。

我几乎可以肯定这是一个正确的行为,但不知何故我找不到任何参考为什么会这样。

有人能指出我正确的方向吗?

编辑:

当您从选中的复选框开始时,它变得更加有趣: http: //jsfiddle.net/L7rne/8/ - 复选框未选中,但其值保持选中 http://jsfiddle.net/L7rne/9/ - 复选框变为未选中,但其值变为false

(这与使用checkbox.checkedand的纯 Javascript 代码一致checkbox.getAttribute('checked'),所以我没有粘贴另一个 jsfiddle 片段)

编辑2:

COBOLdinosaur 在其中一条评论中指出了这一点:http ://www.w3.org/TR/DOM-Level-2-Events/events.html#Events-flow-cancelation ,但恕我直言,这只证实了我的观点...

4

2 回答 2

0

不确定我是否理解这个问题。为什么这不是正确的行为?

说真的,假设您编写了一些代码,根据是否选中复选框来显示/隐藏 div。

所以,你写一个onclick。如果未勾选复选框,然后单击它,您认为应该对 div 做什么?显然,您希望事件找到要选中的复选框。

于 2011-11-13T16:56:03.400 回答
0

到事件处理程序触发时,事件已经发生,并且浏览器正在重新呈现以作为响应。如果处理程序被挂起,则浏览器完成工作,因为没有任何阻止它。

就像在银行抢劫案中报警一样,他们在途中发生了交通事故。劫匪逃之夭夭。契约已经完成。

于 2011-11-13T16:58:45.173 回答