javascript - 观察者检查鼠标移动何时停止

标签 javascript observers

我想在鼠标移动在 mouseDown Observer 内结束时执行函数。但是当我放下鼠标时, onComplete 函数不会执行。有什么建议吗?

var split = $('.drag');
var parent = $('.Container');

var mouseDowns = Rx.Observable.fromEvent(split, "mousedown");
var parentMouseMoves = Rx.Observable.fromEvent(parent, "mousemove");
var parentMouseUps = Rx.Observable.fromEvent(parent, "mouseup");

var drags = mouseDowns.flatMap(function(e){
   return parentMouseMoves.takeUntil(parentMouseUps);
});

drags.subscribe(
   function(e) {
     var $containerWidth = $('.Container').width();
     var clientX = $containerWidth - e.clientX;

     if (clientX >= 50 && e.clientX >= 50) {
        $('.left').css('right', clientX);
        $('.right').css('width', clientX);
      }
    },
    function(error) {
        console.log(error);
    },
    function() {
        console.log('finished');
    });

jsbin.com url

最佳答案

如果你想检测拖动事件结束,也称为放置,那么类似这样的事情应该可以解决问题:

var drop = mouseDowns.selectMany(
  Rx.Observable.concat([
    parentMouseMoves.take(1).ignoreElements(),
    parentMouseUps.take(1)
  ])
);

drop.subscribe(function(e) {
  console.log('finished');
});

如果假设最外层函数在每次拖动完成时返回一个值,则需要将拖动完成转换为最外层可观察对象的“onNext”事件。

关于javascript - 观察者检查鼠标移动何时停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40501979/

相关文章:

具有多个 JFrame 的 java.util.observer

swift - 如何观察然后从 firebase 数据库连续快速写入

javascript - 创建 Highchart(柱形图)并从外部 json 文件读取数据

javascript - 注销/删除 Service Worker

java - 在 freemarker 模板中从 javascript 调用 Java 类的方法

IOS,带有观察者的自定义表格 View 单元格,如何分离观察者

来自观察者的 Magento 网站弹出窗口

javascript - 将属性设置为未定义时未通知观察者

javascript - 在不使用主题标签的情况下提取 Instagram 上的最新动态

javascript - jQuery JSON AJAX 请求不同域