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

时间:2011-10-08 22:03:23

标签: javascript jquery if-statement mousedown

是否可以做这样的事情:

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

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

其他详细信息:我正在尝试检查当鼠标离开特定DIV时鼠标按钮是否已关闭,因此如果此人正在按住鼠标按钮而鼠标按下离开div,做到这一点,否则就这样做。

5 个答案:

答案 0 :(得分:19)

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

以上是working example以上内容。

答案 1 :(得分:6)

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

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

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

答案 2 :(得分:1)

http://jsfiddle.net/5HrWF/

这样的事情?

代码:

<!DOCTYPE html>
<html>
<head>
  <script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
  <p>Press mouse and release here.</p>

<script>
    $("p").mouseup(function(){
      $(this).append('<span style="color:#F00;">Mouse up.</span>');
    }).mousedown(function(){
      $(this).append('<span style="color:#00F;">Mouse down.</span>');
    });

</script>

</body>
</html>

答案 3 :(得分:0)

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

答案 4 :(得分:0)

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

Mousedown启动一个计时器,检查鼠标是否在1秒后仍然处于停机状态。

<button id="button">Press me</button>
<div id="log"></div>

代码:

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');
});