有没有可能像这样做:
if ($(this).mousedown() == true) {
我原以为那个方法会起作用,但其实并没有。
附加细节:我正在尝试检查鼠标在离开特定的 DIV
时是否按下了鼠标按钮,如果用户在鼠标离开 div 的同时仍然按住鼠标按钮,则执行一项操作,否则执行另一项操作。
有没有可能像这样做:
if ($(this).mousedown() == true) {
我原以为那个方法会起作用,但其实并没有。
附加细节:我正在尝试检查鼠标在离开特定的 DIV
时是否按下了鼠标按钮,如果用户在鼠标离开 div 的同时仍然按住鼠标按钮,则执行一项操作,否则执行另一项操作。
我能想到的最简单方法是将 mousedown
和 mouseup
事件监听器绑定到 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");
}
});
这是上述问题的可运行示例。
$.data()
方法将变量down
附加到#example
元素上是否有问题? - Jared Farrish回答您的原始问题,是的,这是可能的。当mousedown事件在元素上触发时,该元素变为活动状态,并可通过伪选择器:active进行选择。在jQuery中,如果未选择任何内容,则返回一个空数组,我们可以利用这个特性与.length数组属性结合使用,将活动伪选择器转换为检查鼠标是否按下了特定元素的检查,如下所示:
if ( $('#id:active').length ) {
//do something
}
检查鼠标在某个特定元素上是否按下,是一个不同的事件,与这个问题的标题无关,应该修改。谷歌把我带到了这里,这个答案是为那些将来必然会跟随的人准备的。
像这样的东西?
代码:
<!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>
好的,我能给你的最佳选择是这个: http://jsfiddle.net/qK8rr/2/
:)
- Jared Farrish看看这个。 http://jsfiddle.net/b1Lzo60n/
按下鼠标键启动一个计时器,检查鼠标在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');
});
mousemove
和e.which == 1
。 - Muhammad Umer