【发布时间】:2023-03-30 22:49:01
【问题描述】:
我试图检测 mouseup(释放鼠标按钮)何时发生在触发 mousedown 事件的元素之外。我有几个按钮,我通过 mousedown(按下按钮)和完成单击(mousedown+mouseup)来更改 CSS(通过使用类)。问题是,如果您单击元素然后在元素外部释放鼠标按钮,则 mouseup 不会触发。我还尝试在文档上捕获一般的“mouseup”事件以“重置”分配给元素的类,但这似乎也不起作用。
这是一个示例 HTML:
<div class="qbuttons">
<a id="qb_appointments" href="#" class="appointments"><div>
Schedule a Service<br />
Appointment</div></a>
</div>
这是我用来摆弄元素的 jQuery:
var current_qbutton = "";
$('.qbuttons a').mousedown(function() {
current_qbutton = $(this).attr('id');
$(this).addClass('active');
});
$('.qbuttons a').click(function() {
$(this).removeClass('active');
});
$('*').mouseup(function(event) {
event.stopPropagation();
alert(current_qbutton);
if(current_qbutton != "") {
$('#' + current_qbutton).removeClass('active');
current_qbutton = "";
}
});
我已经为 mouseup 尝试了不同的选择器——文档、窗口、'body *'、'html '和''——从我所看到的情况来看,mouseup 似乎不是在 mousedown 元素外释放鼠标按钮时触发,因为警报不会发生。
【问题讨论】:
-
你已经明白了,mousedown / mouseup 事件不是那样工作的,所以你必须想出一些其他的方法来做你想做的任何事情。这是一个可以玩的小提琴 -> jsfiddle.net/xQamz