我有一个树型面板,每个节点都有单击和双击事件。但是当我双击它时也会触发单击事件。那么双击时如何防止单击事件触发?如何在extjs中双击时防止单击事件发生
5
A
回答
8
一般使用都单击和双击事件被认为是一种不好的做法,并且非常沮丧。
但是,如果您仍想这样做,唯一能够区分单击和双击的方法是通过测量点击之间的时间来人为添加此区分。
这个想法是,你不要立即做你的单击动作,而是等待第二次点击。如果第二次点击很快出现,那么您的双击动作就会被触发。否则,您的单击操作会在延迟后触发。
你的代码看起来是这样的:
var singleClickTask = new Ext.util.DelayedTask(singleClickAction), // our delayed task for single click
singleClickDelay = 100; // delay in milliseconds
function onClick() {
singleClickTask.delay(singleClickDelay);
}
function onDblClick() {
// double click detected - trigger double click action
doubleClickAction();
// and don't forget to cancel single click task!
singleClickTask.cancel();
}
function singleClickAction() {
// something useful...
}
function doubleClickAction() {
// something useful...
}
// setting event handlers on an Element
elem.on('click', onClick);
elem.on('dblclick', onDblClick);
最明显的缺点是:
- 没有为一个单一的点击动作
- 在不同的操作系统的延迟可以有不同的设置对于触发双击的点击之间的时间间隔,如此硬编码的singleClickDelay并不可靠
- JavaScript计时器不是100%准确的而结果可能与不同的性能
系统不同,我不知道有什么更好的解决方案,并再次,我鼓励你在同一时间使用单,双点击,这通常会导致一个破碎的用户体验。
1
我认为最好在第一次点击事件而不是第二次事件上执行操作。你可以通过设置一个布尔值来检查每个点击事件。
该代码证实的方法
onGridRowClick: function(view, record, item, index, e, eOpts) {
if (record._task_in_progress) {
return;
}
// Let the second click as part of the double click to be ignored
record._task_in_progress = true;
// Emulating async task here
setTimeout(function() {
record._task_in_progress = false;
}, 1000);
}
相关问题
- 1. 如何防止发生单击事件当双击在NSTableView中的目标c
- 2. 双击事件触发时如何取消单击事件
- 3. 如何在实际尝试触发双击事件时阻止双击单击事件?
- 4. 在单击事件时停止双击事件
- 5. 如何防止两次发生Javascript单击事件?
- 6. 如何防止在触摸中发生双击时启动单击攻击开始方法
- 7. map.clearLayers防止单击事件中的“单击”事件
- 8. 如何防止.focus在HTMLelement之后发生点击事件?
- 9. 如何防止双击“点击”jquery
- 10. 当双击\隐藏更高层时,防止双击事件在较低层上
- 11. 单击并双击事件触发
- 12. 防止触发父母双击事件的小孩点击事件
- 13. 防止当keyup事件发生时在angular2中的默认点击事件
- 14. ASP.NET防止双击
- 15. 防止双击TButton
- 16. 防止双击HTML
- 17. 单击事件充当双击事件
- 18. 防止浏览器产生双击事件
- 19. 如何防止在ListView上双击?
- 20. 如何防止点击单元格时滚动extjs网格?
- 21. 当超链接点击时防止父容器点击事件发生
- 22. 防止双击触发celldoubleclick事件的行分隔线
- 23. 改变事件点击只发生在双击jQuery FullCalendar插件
- 24. 点击事件防止鼠标触发
- 25. 如何防止正常穿梭双击事件
- 26. 如何防止提交按钮上的双击事件
- 27. 如何防止单击另一个元素时的div.click事件
- 28. 如何防止点击事件?
- 29. 防止jqGrid中的行发生点击事件
- 30. jquery点击事件防止