Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 检测mousedown元素外部的mouseup_Jquery_Mousedown_Mouseup - Fatal编程技术网

Jquery 检测mousedown元素外部的mouseup

Jquery 检测mousedown元素外部的mouseup,jquery,mousedown,mouseup,Jquery,Mousedown,Mouseup,我试图检测mouseup(鼠标按钮释放)何时发生在触发mousedown事件的元素之外。我有几个按钮,我通过鼠标向下(按钮按下)和完成点击(鼠标向下+鼠标点击)来改变CSS(通过使用类)。问题是,如果单击该元素,然后在该元素外部释放鼠标按钮,则鼠标不会启动。我还尝试在文档上捕获一个常规的“mouseup”事件来“重置”分配给元素的类,但这似乎也不起作用 以下是一个示例HTML: <div class="qbuttons"> <a id="qb_appointments" hre

我试图检测mouseup(鼠标按钮释放)何时发生在触发mousedown事件的元素之外。我有几个按钮,我通过鼠标向下(按钮按下)和完成点击(鼠标向下+鼠标点击)来改变CSS(通过使用类)。问题是,如果单击该元素,然后在该元素外部释放鼠标按钮,则鼠标不会启动。我还尝试在文档上捕获一个常规的“mouseup”事件来“重置”分配给元素的类,但这似乎也不起作用

以下是一个示例HTML:

<div class="qbuttons">
<a id="qb_appointments" href="#" class="appointments"><div>
Schedule a Service<br />
Appointment</div></a>
</div>

我尝试了不同的mouseup选择器——文档、窗口、“body*”、“html”和“”——从我看到的情况来看,mouseup似乎不是在mousedown元素外释放鼠标按钮时启动的,因为警报没有发生。

这不起作用的原因是由于
锚定元素(它似乎不起作用)。您可以删除
a
并将其替换为
div
span
或您喜欢的任何其他内容,然后可以在元素外部触发
mouseup
事件

这似乎对我有用


如果我理解的很好,你可以使用这种类型的鼠标捕捉整个文档,并检查内部目标是否为,然后决定你想要什么

$(document).mouseup(function (e) {
 var buttons = $("#btn1, #btn2");
 if (!buttons.is(e.target) //clicking target is not the buttons
 {[desision 1] } 
 else 
 { [desision 2] }
});

希望这有帮助。

您已经找到了答案,mousedown/mouseup事件不是这样工作的,因此您必须找到其他方法来完成您想要做的事情。这里有一个可以玩的小把戏->锚元素将想要一个实际的URL。代码中只有哈希符号作为占位符。外层的div.qbuttons包含一个或多个锚元素。好的@Joe现在这里是更奇怪的地方。我修改了你的JS Fiddle代码,使之更接近我的结构,你的代码仍然有效。我已经修改了我的代码,使之更接近您的,但我的代码仍然无法工作。这应该是一个简单的按钮效果,我使用jQuery是因为internetexplorer没有正确地实现:active伪类,我无法让它为我工作。Grr。以下是我目前拥有的:
var current_button;
$('.test').on('mousedown', function(){
    current_button = this.id;
});
$(document).on('mouseup', function(){
    alert(current_button);
});
$(document).mouseup(function (e) {
 var buttons = $("#btn1, #btn2");
 if (!buttons.is(e.target) //clicking target is not the buttons
 {[desision 1] } 
 else 
 { [desision 2] }
});