javascript - 单击、拖动和调整大小事件混合在一起

标签 javascript jquery jquery-ui

我有一个 div,我想应用 clickdragresize 事件。但是,当我开始结束拖动时,单击事件被激活(与结束调整大小相同)。有谁知道如何避免这种情况?

我的代码看起来像这样:

$("#foo").click(function() {
     //click handler
});

$("#foo").draggable({
     stop: function() {//dragstop handler}
});

$("#foo").resizable({
     stop: function() {//resizestop handler}
});

当我完成拖动元素时,将调用 dragstopclick 处理程序。与调整大小和单击相同。关于如何避免这种情况的任何想法?

最佳答案

click 事件在您将手指从鼠标按钮上移开时触发,您可以利用这一点。您可以在其他事件处理程序中设置一个标志,说明它们已被使用,如果是这样,您就不能在 click 事件处理程序中运行代码:

var doClick = true;
$("#foo").click(function() {

     //check if the other event handlers were used, if they were then doClick will equal false and this `if` statement will resolve to false
     if (doClick) {
         //run code for click event handler here
     } else {
         //setup the flag for next-time
         doClick = true;
     }
}).draggable({
     stop: function() {

         //set flag to disallow click event handler
         doClick = false;
     }
}).resizable({
     stop: function() {

         //set flag to disallow click event handler
         doClick = false;
     }
});

另请注意,我更改了对 $('#foo') 选择的调用,因此不必选择该元素三次(现在只需一次)。

关于javascript - 单击、拖动和调整大小事件混合在一起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9303119/

相关文章:

javascript - 为什么我的 jquery 删除列表中的第一个元素而不是指定的元素?

javascript - 使用 django channel 将 webRTC 视频流发送到服务器

javascript - Jquery 函数 - 元素上

jquery - jquery 自动完成中的文本字段锁定 - 仅允许在自动完成选项内提交

javascript - 需要 jQuery 时间表小部件

jquery - 按钮不带jquery ui按钮效果

javascript - 富文本数据保存为 HTML 到 sql server

javascript - 减少巨大的数组列表以使其更具可读性

javascript - 多个表单提交失败

php - 如何让slickgrid div随表格大小调整大小