我需要实现一种行为:
我想我知道如何捕捉click& hold类型的事件,但如何区分第一和第二?
你能告诉我如何使用这个jsbin来做到这一点。我已经做了"点击,按住&拖动"部分,除了它仍在点击'点击'拖动元素后的事件,它不应该。
再次:单击元素 - 一个事件,单击并按住 - 元素可拖动(即使在鼠标按下后),再次单击时,它将恢复正常(不可剥离)状态。
我不是在寻找一个简单的解决方案,它必须使用Rx.Observable
或至少培根的streamEvent
对象构建
谢谢
答案 0 :(得分:5)
我认为您与您的解决方案非常接近,但在使用浏览器的内置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);
});
如果是clicks
,我们会在鼠标按下鼠标后等待最长250毫秒;如果是后者,我们只有在1000毫秒内没有鼠标启动时才会生成事件。
可能存在某些极端情况,其中代码无法正常工作。
答案 1 :(得分:2)
Here是我提出的解决方案(使用Bacon.js)。