我有以下摘录:http://jsfiddle.net/L7rne/5/和http://jsfiddle.net/L7rne/6/
事实证明,如果您在点击事件处理程序中暂停执行脚本,则会选中复选框,即使存在event.preventDefault()
。
我在Firefox 7和Chrome 15中尝试了这一点,两者的行为方式相同。
我几乎可以肯定这是一个正确的行为,但不知怎的,我找不到任何参考为什么会这样。
有人能指出我正确的方向吗?
当您选中复选框时,它会变得更有趣: http://jsfiddle.net/L7rne/8/ - 该复选框未选中,但其值仍为已选中 http://jsfiddle.net/L7rne/9/ - 该复选框未选中,但其值变为 false
(这与使用checkbox.checked
和checkbox.getAttribute('checked')
的纯Javascript代码一致,因此我不会粘贴其他jsfiddle代码段
COBOLdinosaur其中一条评论pointed我对此:http://www.w3.org/TR/DOM-Level-2-Events/events.html#Events-flow-cancelation,但恕我直言,这只能证实我的观点......
答案 0 :(得分:0)
不确定我是否理解这个问题。为什么不是正确的行为?
严重的是,假设您根据是否选中了复选框来编写显示/隐藏div的代码。
所以,你写了一个onclick。如果复选框未选中,然后单击它,您认为应该对div做什么?显然,您希望事件找到要检查的复选框。
答案 1 :(得分:0)
随着事件处理程序触发,事件已经发生,浏览器将重新呈现以作为响应。如果处理程序被挂起,那么浏览器就完成了工作,因为没有任何东西阻止它。
就像打电话给警察抢劫银行一样,他们正在途中发生交通事故。劫匪逃走了。契约已经完成。