绑定多个事件并在触发所有事件时运行函数! JS,Jquery

时间:2014-03-04 13:16:29

标签: javascript jquery events

我想将两个鼠标事件绑定到一个函数(mousedown和moucemove)。但我想只在两个事件都被触发时才运行该函数。

这会将每个事件绑定到函数:(这不是我想要的)

$("#someid").bind("mousedown mousemove", function (event) {  someFunction();  });

我能做到这一点并且有效:

$("#someid").bind("mousedown", function (event) {  
     someFunction();
     $("#someid").bind("mousemove", function (event) {
         someFunction();
     });
});

$("#someid").bind("mouseup", function (event) {
    $("#someid").unbind("mousemove");
});

有更好,更快的方法吗?

2 个答案:

答案 0 :(得分:2)

仅绑定到 mousemove 事件。如果在移动时按下鼠标左键,则event.which将为1。

$(document).on('mousemove', function(e) {
    if (e.which == 1) {
        //do some stuff
    }
});

答案 1 :(得分:0)

我想你只希望mousemove处理程序在按下鼠标按钮时工作?如果是这样,我建议使用某种布尔标志。您在mousedownmouseup事件上切换其状态:

var flag = false;
$('#someid')
    .on('mousedown', function(e) {
        flag = true;
    })
    .on('mouseup', function(e) {
        flag = false;
    })
    .on('mousemove', function(e) {
        if (!flag) {
            return false;
        }

        // else... do your stuff
    });