javascript - mouseup 事件有问题

标签 javascript jquery html css svg

大家好,我的代码运行良好,但我希望脚本在鼠标松开事件上停止。

这是我现在拥有的一个示例。 如何在鼠标按下事件时停止脚本,以便它看起来只在拖动图像时显示坐标。

谢谢!

http://jsfiddle.net/Hc7x4/20/

$(document).ready(function () {
    $("#map-catcher").mousedown(function (e) {

        $("#map-catcher").mousemove(function (e) {
            $("#coord").text("x:"+e.offsetX+", y:"+e.offsetY);
              return;
        });

         $("#map-catcher").mouseup(function (e) {
          return;
         });        

   });
});

最佳答案

使用 mousemove 事件参数

我认为最简单的方法是检查 mousemove 事件的事件参数,您应该能够确定鼠标按钮是否按下...

$(document).ready(function () {
    $("#map-catcher").mousemove(function (e) {
        if (e.which == 1) {
            $("#coord").text("x:" + e.offsetX + ", y:" + e.offsetY);
        }
    });
}

Here is a working example

注意:我不能 100% 确定此方法的跨浏览器兼容性(在 Chrome 中测试)

使用全局标志

如果这不能按您希望的方式工作,您可以使用全局标志来尝试它,该标志可以跟踪鼠标当前是否处于按下状态...

var moveMode = false;

$(document).ready(function () {
    $("#map-catcher").mousedown(function (e) {
        moveMode = true;
    });

    $("#map-catcher").mousemove(function (e) {
        //only set the coordinates when the flag is true
        if (moveMode) {
            $("#coord").text("x:" + e.offsetX + ", y:" + e.offsetY);
        }
    });

    $("#map-catcher").mouseup(function (e) {
        moveMode = false;
    });
});

Here is a working example

注意:如果您在 "#map-catcher" 元素之外释放鼠标,可能会导致一些错误效果。将 mouseup 事件更改为在 document 级别上工作可能是个好主意。像这样:

$(document).mouseup(function (e) {
    moveMode = false;
});

关于javascript - mouseup 事件有问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23915596/

相关文章:

javascript - 如果显示 :none,则删除 div 类

jquery - 功能 Carousel js 的响应式设计

javascript - 将鼠标悬停在父 div 上时显示子 div - Javascript

javascript - 如何在 JS 对象定义中调用先前定义的函数?

javascript - 两个版本的 jQuery 正在运行,无法让 'noConflict' 工作

javascript - 生成随机电子邮件地址后,我希望能够再次使用同一生成的电子邮件地址

jquery - 使用外部提交按钮提交 Rails Remote_form

jquery - 链接到 HTML 页面时 CSS 不适用

javascript - 从 javascript 或 ASP.Net 读取 Flash Cookie

php - 将变量从 javascript 函数传递到 codeigniter 中的 Controller 方法