14

是否有可能做这样的事情:

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

我认为这会起作用,但事实并非如此。

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

4

5 回答 5

27

我能想到的最简单的方法是将事件侦听器绑定到mousedown并相应地更新全局变量。如果是您的元素,您可以检查该变量的状态并采取适当的行动。(注意:这假设您不在乎鼠标是否在上方被按下...您必须澄清您的问题)。mouseupdocumentmouseoutdiv

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

这是上面的一个工作示例

于 2011-10-08T22:09:12.007 回答
6

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

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

检查鼠标是否在给定时间点悬停在特定元素上是一个不同的事件,并且与此问题的标题不符,我可以添加应该更改。谷歌把我带到了这里,这个答案是为那些将不可避免地跟随的人准备的。

于 2013-08-12T07:13:12.380 回答
0

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>
于 2011-10-08T22:06:56.503 回答
0

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

于 2011-10-08T22:13:59.147 回答
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');
});
于 2015-02-26T05:18:46.557 回答