当用户单击鼠标左键或中间按钮时,我想将 jQuery-UI 对话框显示为弹出窗口。它适用于左键单击(我得到警报框,然后是弹出窗口)但不适用于中间(既不是警报框也不是弹出窗口)。我错过了什么?
$('a.external').live('click', function(e){
if( e.which <= 2 ) {
e.preventDefault();
alert ("inside if");
}
popUp.start(this);
});
当用户单击鼠标左键或中间按钮时,我想将 jQuery-UI 对话框显示为弹出窗口。它适用于左键单击(我得到警报框,然后是弹出窗口)但不适用于中间(既不是警报框也不是弹出窗口)。我错过了什么?
$('a.external').live('click', function(e){
if( e.which <= 2 ) {
e.preventDefault();
alert ("inside if");
}
popUp.start(this);
});
使用mousedown
ormouseup
代替click
. 并且(除非您使用的是非常旧的 jQuery 版本)使用.on()
而不是.live()
:
$(document).on("mousedown", "a.external", function(e) {
if( e.which <= 2 ) {
e.preventDefault();
alert ("inside if");
}
popUp.start(this);
});
...理想情况下,您将使用比document
.
演示:http: //jsfiddle.net/7S2SQ/
为了让它在 Firefox (40.0.3) 中充分发挥作用,我必须实现.on('mouseup', fn)
,如下所示:
$(selector).on('mouseup', function (e) {
switch (e.which)
{
// Left Click.
case 1:
// By way of example, I've added Ctrl+Click Modifiers.
if (e.ctrlKey) {
// Ctrl+LeftClick behaviour.
} else {
// Standard LeftClick behaviour.
}
break;
// Middle click.
case 2:
// Interrupts "Firefox Open New Tab" behaviour.
break;
// Default behaviour for right click.
case 3:
return;
}
// Pass control back to default handler.
return true;
});