请注意,此问题可能不适用于公众,因为除非您是快速点击者,否则不会发生此问题。(150-200 毫秒/点击)我发布此问题的原因是因为我的应用程序有一个表单,其中有 20 多个复选框并排在一起,经过广泛研究,我没有发现与此问题相关的问题。
这是一个简化的场景 - 4 个复选框和 4 个标签,每个复选框 id 一个:
[CB1] Label 1
[CB2] Label 2
[CB3] Label 3
[CB4] Label 4
假设在每种情况下所有 CB 都未选中。
预期行为:
- 我快速连续点击4个CB,它们都会被选中。(真的)
- 我快速连续单击 4 个标签,相应的 CB 变为选中状态。(仅适用于 Chrome,但仍不是最佳的)
Win 7 上案例 2 的实际行为(单击标签,因为如您所知,标签很大且可样式化,复选框很小且依赖于操作系统):
- (在 Firefox 19 中)CB2 和 CB4 未选中,在列表中向下显示标签 2 和标签 4 的“标签”一词,就像我双击它们一样。
- (在 Chrome 26 中)所有 CB 都得到了正确检查,但是在列表中,标签 2 和标签 4 的“标签”一词被突出显示,就好像我双击它们一样。
- (在 IE 10 中)CB2 和 CB4 未选中,但没有错误突出显示。
如果点击是在同一个元素上,那么错误的行为可能是合理的。在我们的例子中,这些显然是具有不同 ID 和名称的唯一复选框。所以结果出乎意料。
所以我的问题是:
当我快速单击不同的复选框时,有没有办法禁用触发双击事件,但仍然通过快速单击检查它们?
我最接近的是以下脚本,有趣的是,它使 Firefox 的行为类似于 Chrome,而 Chrome 的行为类似于 Firefox:
jQuery(document).on('dblclick', 'input:checkbox+label', function(event){
console.log('ugly hack fired');
$(this).click();
event.preventDefault();
})