10

当用户单击鼠标左键或中间按钮时,我想将 jQuery-UI 对话框显示为弹出窗口。它适用于左键单击(我得到警报框,然后是弹出窗口)但不适用于中间(既不是警报框也不是弹出窗口)。我错过了什么?

$('a.external').live('click', function(e){
  if( e.which <= 2 ) {
    e.preventDefault();
    alert ("inside if");
  }
  popUp.start(this);
});
4

2 回答 2

24

使用mousedownormouseup代替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/

于 2013-06-16T06:45:34.097 回答
3

为了让它在 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;
});
于 2015-09-23T01:10:40.080 回答