gpt4 book ai didi

extjs - 在extjs中双击时如何防止触发单击事件

转载 作者:行者123 更新时间:2023-12-04 14:03:55 28 4
gpt4 key购买 nike

我有一个树面板,对于每个节点,我都有单击和双击事件。但是当我双击它时,它也会触发单击事件。那么如何防止双击时触发单击事件?

最佳答案

通常同时使用单击和双击事件被认为是一种不好的做法,并且非常不鼓励。

但是,如果您仍然想要这样做,唯一能够区分单击和双击的方法是通过测量单击之间的时间来人为地添加这种区别。

这个想法是,您不会立即执行单击操作,而是等待第二次单击。如果第二次点击很快,那么你的双击 Action 就会被触发。否则,您的单击操作会在延迟后触发。

您的代码将类似于:

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% 准确,结果可能因系统性能不同而有所不同

  • 我不知道有什么更好的解决方案,而且我不鼓励您同时使用单击和双击,这通常会导致用户体验不佳。

    关于extjs - 在extjs中双击时如何防止触发单击事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10893149/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com