调度点击事件并保持击键修改器

时间:2012-09-15 23:39:09

标签: javascript javascript-events onclick modifier-key

我想听一个特定元素的click事件,然后将它发送到一个link元素,同时记住元键是否被保持。

例如: 假设我有一张元素表。当用户点击某行时,我想关注一个链接,但如果用户有 / ctrl ,我希望在新标签页中打开该链接按键。

看起来很简单,但我发现这很棘手......(因为我没有成功做到这一点!)

先谢谢你的帮助!

2 个答案:

答案 0 :(得分:1)

DOM Event API已经提供了您所需要的一切,假设您只需要记住合法用户操作中的修饰键。

使用addEventListener捕获事件时,只需将参数(即DOMEvent实例)传递给处理函数,然后使用{{3}将其重新发送到目标元素}:)

实际上,DOMEvent实例封装了其源环境。更具体地说,dispatchEvent知道触发时按下了哪些键。


演示:尝试点击MouseEvent中的链接,同时按住(或 ctrl ,如果不在Mac上),例如。

如需完整参考,请使用以下代码:

var button = document.getElementById('source'),
    target = document.getElementById('target');

function handler(evt) {
    target.dispatchEvent(evt); // that's all the magic it takes
}

button.addEventListener(
    'click', // listen to a click event
    handler,
    false // no capture, i.e. do not catch events before children
);​

您可能还会发现this JSfiddle有用:)

答案 1 :(得分:-1)

试试这个:

$(elm).click(
   function (event) {
      if (event.ctrlKey == 1) {
         window.open(link);
      }
      else {
         window.location = link;
      }
   }
);