jQuery的.click函数不能与中间按钮一起使用

8

I have the following code:

$(document).ready(function() {
                $("#TestLink").click(function() {
                    $("#LinkHolder").html("test");
    });
});

<span id="LinkHolder">
<a href="SomeLink" id="TestLink" target="_blank">Click here to test</a>
</span>

当我用左键单击链接时,一切都像魔法般正常工作,但是当我使用CTRL +左键或中键单击它时,它不起作用。

如果有人能帮我解决这个问题,我会很高兴的。

提前致谢!


首先,您应该解释为什么要使用中间按钮单击链接。 - rogeriopvl
4
因为一些用户不仅使用左键打开链接,所以需要进行翻译。 - RRStoyanov
2
现在中键点击链接打开新标签页几乎已经成为了标准,不是吗? - Rodolfo
1个回答

14

请考虑:

$(document).ready(function() {
                $("#TestLink").mouseup(function(e) {
                    $("#LinkHolder").html("test");
    });
});

作为一种替代方案?这可以检测到鼠标中键的点击。


根据这个,您可以通过查看 e.button 来找出点击了哪个按钮:来自 http://www.quirksmode.org/js/events_properties.html - lod3n
忘了提到这会禁用链接点击的默认行为,如果需要,请添加以下内容:window.open($(this).find('a').attr('href'), '_blank); - Waleed Amjad
顺便说一句,我用 $(e).attr("href") 代替了 window.open($(this).find('a').attr('href'), '_blank);,因为动作是在<a>链接上执行的,所以用你的方法会返回 "undefined"。如果动作在<span>上执行,那么你的方法也可以使用。无论如何,你的建议节省了我很多时间。再次感谢。 - RRStoyanov
3
你需要同时处理“click”和“mouseup”事件,否则如果你通过按“Enter”键切换到链接并按下该键,则不会触发事件。 - ThiefMaster
这样做不会导致检测到右键单击吗?这显然不是你想要的。 - Nathan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接