jQuery点击和中键行为

jQuery点击和中键行为,jquery,onclick,anchor,Jquery,Onclick,Anchor,我有如下html代码: <ul> <li> <a href="#foo">foo</a> </li> </ul> 当用户单击项目时,将调用click handler 我想要的是: 更改处理程序方法中的哈希(使用window.location.hash) 当用户用鼠标左键单击时,应调用处理程序 当用户用鼠标中键单击时(例如在Chrome中),应该在新选项卡中打开链接,但不应该调用当前页面上的处理程序

我有如下html代码:

<ul>
  <li>
    <a href="#foo">foo</a>
  </li>
</ul>
当用户单击项目时,将调用click handler

我想要的是:

  • 更改处理程序方法中的哈希(使用
    window.location.hash
  • 当用户用鼠标左键单击时,应调用处理程序
  • 当用户用鼠标中键单击时(例如在Chrome中),应该在新选项卡中打开链接,但不应该调用当前页面上的处理程序
  • 支持与链接的另一种交互:当用户在活动链接上按enter键时(他可以使用
    tab
    键激活它),或者如果他使用诸如VimOperator或vimium之类的浏览器扩展插件
如果我在处理程序中更改哈希,则中间按钮不会打开新选项卡(但处理程序已在当前页面上被调用),但如果不在事件中调用处理程序,例如中间按钮单击或按下ctrl或shift时单击,则已解决此问题

如果我从处理程序代码中删除哈希更改,中间按钮将打开新选项卡,但处理程序将在当前页面上调用


请给我一些如何实现我的目标的建议:我应该在单击处理程序的同时实现
mousedown
处理程序,还是有更方便的方法?

我写了一篇关于鼠标左键与其他鼠标按钮的文章,应该会有所帮助:

它假定您正在使用jQuery。特定的按钮按下在
属性下的事件对象中指示