单击并拖动时的jQuery mouseup事件

用户名

我试图div在用户单击一个框时显示一个我尝试使用此代码:

$(document).ready(function(){
  $(".hold").mousedown(function(){
    $(".box").css("height","200px");
  });
  $(".hold").mouseup(function(){
    $(".box").css("height","0px");
  });
});

但是,在代码的第二部分中,mouseup当我单击并拖动时,该事件不会触发回调。

如何使其运作?

<!DOCTYPE html>
<html>
  <head>
    <title>click and hold project</title>
    <link rel="stylesheet" type="text/css" href="style.css">
  </head>
  <body>
    <div class="hold"></div>
    <div class="box"></div>

    <script src="jquery-2.2.3.min.js"></script>
    <script src="app.js"></script>
  </body>
</html>
哈希笔

正如@wahwahwah指出的那样,问题在于,当您在.hold元素上按下鼠标键,然后将鼠标移到其他位置并留下键时,mouseup将不会调用给定的处理程序,因为它是在.hold元素上设置的

从技术上讲,在这种情况下,事件的目标会有所不同,因此它将与.hold元素不匹配,并且最终mouseup将不会触发事件的回调函数

一种解决方法是在开头添加指向clicked元素的指针,然后在document元素上添加一个事件侦听器,并检查元素是否event.target与clicked元素相同。

如果它们不相同,我们将.hold手动触发元素的事件,如下所示:

$(document).ready(function(){
  var mouseTarget;

  $(".hold").on('mousedown', function(){
    $(".box").css("height", "200px");
    mouseTarget = this;
  })
  .on('mouseup', function(){
    $('.box').css("height", "0px");
  });

  $(document).on('mouseup', function(e) {
    if (e.target !== mouseTarget) {
      $(mouseTarget).trigger(e.type);
    }
  });
});
.hold{
  background-color: #000;
  width: 20%;
  height: 10px;
}
.box{
  background-color: #f00;
  width: 100%;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="hold"></div>
<div class="box"></div>

值得一提的是,在上设置的回调函数document将在冒泡阶段触发。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

单击并拖动时的jQuery mouseup事件

来自分类Dev

未发生拖动时不触发 Mouseup 事件

来自分类Dev

原生拖动事件后如何获取mouseup事件?

来自分类Dev

使用mouseup事件触发表行中的按钮单击事件

来自分类Dev

在jquery中mousedown触发mouseup时停止事件

来自分类Dev

在mouseup事件Jquery中仅启用Click事件

来自分类Dev

jQuery UI拖动事件以取消单击事件

来自分类Dev

jQuery UI拖动事件以取消单击事件

来自分类Dev

将“dragstart”事件附加到“mouseup”以获得可拖动体验

来自分类Dev

单击时正在触发拖动事件

来自分类Dev

MouseUp事件在左键单击上不起作用

来自分类Dev

jQuery mouseup事件可在触摸设备上使用吗?

来自分类Dev

jQuery mouseup事件未检测到选中的属性?

来自分类Dev

带有mouseup事件的表行中的触发按钮单击事件

来自分类Dev

当孩子在jQuery中拖动时,如何触发父拖动事件?

来自分类Dev

如何在鼠标单击时设置可拖动事件?

来自分类Dev

单击bingmap上的图钉时触发的拖动事件

来自分类Dev

当我在 chrome 中拖动时触发了单击事件

来自分类Dev

Mouseup事件有问题

来自分类Dev

订购MouseUp事件

来自分类Dev

使用jQuery拖动时如何处理stop事件?

来自分类Dev

jQuery拖动触发的事件

来自分类Dev

在列表外部单击时触发jQuery事件

来自分类Dev

jQuery阻止用户双击或多次单击时执行单击事件

来自分类Dev

在单击按住并拖动期间,鼠标按下事件时偏移不会更新

来自分类Dev

我想在 mouseup 被触发时停止 mousemove 事件。但它似乎不起作用。我该怎么做?

来自分类Dev

如果我按住鼠标左键 10 秒,mousemove 太快突然释放左键,在 JQuery 中没有触发 mouseup 事件?

来自分类Dev

Esc取消拖动事件jQuery拖动

来自分类Dev

JQuery - mousedown,mouseup 并单击相同的元素

Related 相关文章

  1. 1

    单击并拖动时的jQuery mouseup事件

  2. 2

    未发生拖动时不触发 Mouseup 事件

  3. 3

    原生拖动事件后如何获取mouseup事件?

  4. 4

    使用mouseup事件触发表行中的按钮单击事件

  5. 5

    在jquery中mousedown触发mouseup时停止事件

  6. 6

    在mouseup事件Jquery中仅启用Click事件

  7. 7

    jQuery UI拖动事件以取消单击事件

  8. 8

    jQuery UI拖动事件以取消单击事件

  9. 9

    将“dragstart”事件附加到“mouseup”以获得可拖动体验

  10. 10

    单击时正在触发拖动事件

  11. 11

    MouseUp事件在左键单击上不起作用

  12. 12

    jQuery mouseup事件可在触摸设备上使用吗?

  13. 13

    jQuery mouseup事件未检测到选中的属性?

  14. 14

    带有mouseup事件的表行中的触发按钮单击事件

  15. 15

    当孩子在jQuery中拖动时,如何触发父拖动事件?

  16. 16

    如何在鼠标单击时设置可拖动事件?

  17. 17

    单击bingmap上的图钉时触发的拖动事件

  18. 18

    当我在 chrome 中拖动时触发了单击事件

  19. 19

    Mouseup事件有问题

  20. 20

    订购MouseUp事件

  21. 21

    使用jQuery拖动时如何处理stop事件?

  22. 22

    jQuery拖动触发的事件

  23. 23

    在列表外部单击时触发jQuery事件

  24. 24

    jQuery阻止用户双击或多次单击时执行单击事件

  25. 25

    在单击按住并拖动期间,鼠标按下事件时偏移不会更新

  26. 26

    我想在 mouseup 被触发时停止 mousemove 事件。但它似乎不起作用。我该怎么做?

  27. 27

    如果我按住鼠标左键 10 秒,mousemove 太快突然释放左键,在 JQuery 中没有触发 mouseup 事件?

  28. 28

    Esc取消拖动事件jQuery拖动

  29. 29

    JQuery - mousedown,mouseup 并单击相同的元素

热门标签

归档