gpt4 book ai didi

frp - 将单击与单击并按住分开

转载 作者:行者123 更新时间:2023-12-01 23:15:49 29 4
gpt4 key购买 nike

我需要实现一个行为:

  • 点击元素时 - 会发生一件事
  • 但是当单击并按住超过一秒时,会发生其他情况(例如元素变得可拖动),然后第一个事件永远不会触发

我想我知道如何捕获点击并按住类型的事件,但如何区分第一个和第二个?

你能告诉我如何使用这个jsbin来做到这一点吗? 。我已经制作了“单击、按住和拖动”部分,只是在拖动元素后它仍然会触发“单击”事件,但它不应该这样做。

再次:单击元素 - 一个事件,单击并按住 - 元素可拖动(即使在鼠标向上移动后),再次单击时,它会返回到正常(不可拖动)状态。

我不是在寻找一个简单的解决方案,它必须使用Rx.Observable或至少Bacon的streamEvent对象来构建

谢谢

最佳答案

我认为您的解决方案非常接近,但在使用浏览器的内置 click 事件时,可能无法优雅地实现您想要的效果。

HERE这是我尝试解决您的问题。

主要思想是定义您自己的点击流,如下所示:

var clicks = downs.flatMapLatest(function(){
return ups.takeUntil(Rx.Observable.timer(250));
});

var longDownsStart = downs.flatMapLatest(function(){
return Rx.Observable.timer(1000).takeUntil(ups);
});

如果发生点击,我们在鼠标按下后等待最多 250 毫秒,然后再松开鼠标;对于后者,我们仅当 1000 毫秒内没有鼠标松开时才生成事件。

在某些极端情况下,代码可能无法按预期工作。

关于frp - 将单击与单击并按住分开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28706484/

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