我正在使用散列链接的onclick
事件打开<div>
作为弹出窗口。但中间点击不会触发onclick
事件,但只会获取链接的href
属性值,并在新页面中加载网址。如何使用中间点击打开<div>
作为弹出窗口?
答案 0 :(得分:59)
beggs'的回答是正确的,但听起来你想要阻止中间点击的默认动作。在这种情况下,请包含以下内容
$("#foo").on('click', function(e) {
if( e.which == 2 ) {
e.preventDefault();
alert("middle button");
}
});
preventDefault()将停止活动的默认操作。
答案 1 :(得分:23)
您可以使用
识别单击了哪个鼠标按钮。
返回一个整数值,表示更改状态的按钮。
请注意,Internet Explorer中未遵循此约定:请参阅 QuirksMode了解详情。
按钮的顺序可能会有所不同,具体取决于指点设备的配置方式。
同时阅读
Which mouse button has been clicked?
有两个属性可供查找 出鼠标按钮了 点击:哪个和按钮。请注意 这些属性并不总是如此 处理点击事件。为了安全 检测您必须使用的鼠标按钮 mousedown或mouseup事件。
答案 2 :(得分:9)
当人们提供替代品而不是解决方案时,我通常很讨厌,但由于已经提供了解决方案,我将打破我自己的规则。
重写中间点击功能的网站往往真的,真的让我感到烦恼。我通常会中键点击,因为我想在新标签页中打开新内容,同时可以无障碍地查看当前内容。只要您单独保留中间点击功能并通过点击元素的HREF属性提供相关内容,我就会坚信您应该做什么。
答案 3 :(得分:8)
要检测中键单击/鼠标滚轮按钮,您必须使用事件auxclick
。 E.g:
<a href="https://example.com" onauxclick="func()" id="myLink"></a>
然后在您的脚本文件中
func() {
alert("middle button clicked")
}
如果你想用JavaScript做,那么你addEventListener
到元素:
let myLink = document.getElementById('myLink')
myLink.addEventListener('auxclick', function(event) {
alert("middle button clicked")
})
查看有关auxclick
事件here。
答案 4 :(得分:6)
jQuery在事件上提供了.which
属性,它将点击按钮ID从左到右分别为1,2,3。在这种情况下,您需要2。
用法:
$("#foo").live('click', function(e) {
if( e.which == 2 ) {
alert("middle button");
}
});
Adamantium的答案也可以,但你需要注意IE,因为他注意到:
$("#foo").live('click', function(e) {
if((!$.browser.msie && e.button == 1) || ($.browser.msie && e.button == 2)) {
alert("middle button");
}
});
另请注意,.button
属性为0索引而非1索引,如.which
。
答案 5 :(得分:6)
正确的方法是使用.on
,因为.live
已被弃用,然后从
$("#foo").on('click', function(e) {
if( e.which == 2 ) {
e.preventDefault();
alert("middle button");
}
});
或者,如果您想要“实时”的感觉,并且#foo
不在文档开头的页面上:
$(document).on('click', '#foo', function(e) {
if( e.which == 2 ) {
e.preventDefault();
alert("middle button");
}
});
答案 6 :(得分:6)
这个问题有点陈旧,但我找到了解决方案:
$(window).on('mousedown', function(e) {
if( e.which == 2 ) {
e.preventDefault();
}
});
Chrome不开火&#34;点击&#34;鼠标滚轮的事件
在FF和Chrome中工作
答案 7 :(得分:3)
我知道我参加派对已经迟到了,但对于那些仍然处理中间点击问题的人来说,请检查你是否委派了这个事件。如果是委派,click
事件不会触发。比较:
适用于中间点击:
$('a').on('click', function(){
console.log('middle click');
});
这对中间点击不起作用:
$('div').on('click', 'a', function(){
console.log('middle click');
});
如果您仍然需要跟踪中间点击使用事件委派,那么相应jQuery ticket中所述的唯一方法是使用mousedown
或{{1相反。像这样:
适用于委派的中间点击:
mouseup