首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >正在检测鼠标中键单击事件jQuery

正在检测鼠标中键单击事件jQuery
EN

Stack Overflow用户
提问于 2013-06-16 14:38:37
回答 2查看 12.3K关注 0票数 9

我想显示一个jQuery-UI对话框,当用户单击鼠标左键或中间键时弹出一个对话框。它适用于左键单击(我得到警告框,然后弹出),但不适用于中间(既不警告框,也不弹出)。我遗漏了什么?

代码语言:javascript
复制
$('a.external').live('click', function(e){
  if( e.which <= 2 ) {
    e.preventDefault();
    alert ("inside if");
  }
  popUp.start(this);
});
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-16 14:45:34

使用mousedownmouseup而不是click。并且(除非您使用的是非常旧的jQuery版本)使用.on()而不是.live()

代码语言:javascript
复制
$(document).on("mousedown", "a.external", function(e) {
   if( e.which <= 2 ) {
      e.preventDefault();
      alert ("inside if");
   }
   popUp.start(this);
});

理想情况下,您应该使用比document更靠近链接的父元素。

演示:http://jsfiddle.net/7S2SQ/

票数 23
EN

Stack Overflow用户

发布于 2015-09-23 09:10:40

为了让它在火狐(40.0.3)中完全工作,我必须实现.on('mouseup', fn),如下所示:

代码语言:javascript
复制
$(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;
});
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17130852

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档