检查是否使用if语句进行了mousedown?

and*_*ick 12 javascript jquery if-statement mousedown

有可能做这样的事情:

if ($(this).mousedown() == true) {
Run Code Online (Sandbox Code Playgroud)

我认为这样可行,但事实并非如此.

其他细节:当鼠标离开特定时DIV,我正在尝试检查鼠标按钮是否已关闭,因此如果该人在鼠标离开div时按住鼠标按钮,请执行此操作,否则执行此操作.

Jam*_*ice 20

我能想到的最简单的方法是绑定mousedownmouseup事件监听器document并相应地更新全局变量.如果mouseout您的元素,您可以检查该变量的状态并采取适当的行动.(注意:这假设您不关心鼠标是否在超过div或未被按下时......您将不得不澄清您的问题).

var down = false;
$(document).mousedown(function() {
    down = true;
}).mouseup(function() {
    down = false;  
});
$("#example").mouseout(function() {
    if(down) {
        console.log("down");  
    } 
    else {
        console.log("up");   
    }
});
Run Code Online (Sandbox Code Playgroud)

这是上面的一个工作示例.


Jos*_*son 6

回答你原来的问题,是的,这是可能的.当mousedown事件触发元素时,元素变为活动状态,并且可由伪选择器选择:active.在jQuery中,如果没有选择任何内容,则返回一个空数组,我们可以结合使用.length数组属性,并将活动伪选择器转换为检查以查看鼠标是否在特定元素上方或不是所以:

if ( $('#id:active').length ) {
  //do something
}
Run Code Online (Sandbox Code Playgroud)

检查鼠标是否在给定时间点落在特定元素上是一个不同的事件,并不符合此问题的标题,应该更改,我可以添加.谷歌把我带到了这里,这个答案是针对那些不可避免的追随者.