用if语句检查是否mousedown?

有可能做这样的事情:

if ($(this).mousedown() == true) { 

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

其他细节:当鼠标离开特定DIV ,我正在尝试检查鼠标按钮是否按下,所以如果此人在鼠标离开div时按住鼠标按钮,请执行此操作,否则执行此操作。

我能想到的最简单的方法是将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"); } }); 

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

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

 if ( $('#id:active').length ) { //do something } 

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

http://jsfiddle.net/5HrWF/

这样的事情?

码:

       

Press mouse and release here.

好吧,我能给你的最佳选择是: http : //jsfiddle.net/qK8rr/2/

看看这一个。 http://jsfiddle.net/b1Lzo60n/

Mousedown启动一个计时器,检查1秒后鼠标是否仍然熄灭。

  

码:

 var mousedown = false; var mousedown_timer = ''; $('#button').mousedown(function(e) { mousedown = true; $('#log').text('mousedown...'); mousedown_timer = setTimeout(function () { if(mousedown) { $('#log').text('1 second'); } }, 1000); }).mouseup(function(e) { mousedown = false; clearTimeout(mousedown_timer); $('#log').text('aborted'); });