簡體   English   中英

如何在鼠標抬起后停止“mousemove”事件?

[英]How to stop a "mousemove" event after a mouse up?

我想在mousedown事件和mousemove上創建滑動幻燈片,但在mouseup上我想停止mousemove事件。

slide.addEventListener("mousedown", e => {
  console.log(e.clientX);
});

slide.addEventListener("mousemove", function move(e) {
  //  do Somthing
});

slide.addEventListener("mouseup", function stop(e) {
  //  stop the mousemove event
});

在需要時嘗試添加和刪除偵聽器:

function move(e) {
  //  do Somthing
}

slide.addEventListener("mousedown", e => {
  console.log(e.clientX);
  slide.addEventListener("mousemove", move);
});

slide.addEventListener("mouseup", function stop(e) {
  slide.removeEventListener("mousemove", move);
});

停止 mousemove 很簡單,只需調用slide.removeEventListener("mousemove", "function you're calling under mousemove"); 只需將它調用到你想要停止它的方法中

在公共范圍內使用標志。 mousedown中將其設置為true ,在mouseup中將其設置為false mousemove中查看

var pressing = false;

slide.addEventListener("mousedown", e => {
  pressing = true;
});

slide.addEventListener("mousemove", function move(e) {
  if (pressing) {
    // do something only if mouse button is being pressed
  }
});

slide.addEventListener("mouseup", function stop(e) {
  pressing = false;
});

為什么不直接刪除事件偵聽器?

slide.addEventListener("mouseup", function stop(e) {
  slide.removeEventListener("mousemove", function move(e) {});
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM