我想听一个特定元素的click事件,然后将它发送到一个link元素,同时记住元键是否被保持。
例如: 假设我有一张元素表。当用户点击某行时,我想关注一个链接,但如果用户有⌘ / ctrl ,我希望在新标签页中打开该链接按键。
看起来很简单,但我发现这很棘手......(因为我没有成功做到这一点!)
先谢谢你的帮助!
答案 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;
}
}
);