如何编写 .click 的 JQuery 等效项以进行中键单击
How can I write the JQuery equivalent of .click for middle click?
我想
在用户中键单击元素时触发一个操作。
.click
只捕获左键点击(对吗?或者至少我在Firefox上的实验是这样)。
我知道我可以简单地创建一个mousedown
/mouseup
事件并检测单击了哪个按钮,但我不确定我是否会错过.click
具有的各种兼容性/安全/等功能。
我可以编写什么.middleclick
函数来尽可能接近与.click
相同的行为?
以下是我的实验
// this does NOT work for middle-click or right-click
$("a").click(function(e) {
e.preventDefault();
alert(e.which);
});
// this DOES work for all three types of click (although fwiw for right-click
// it does not prevent contextual menu from coming up in FF
document.addEventListener("click", function(e){
e.preventDefault();
alert(e.which);
}, true);
尝试使用鼠标向上而不是单击,
$("a").mouseup(function(e) {
e.preventDefault();
alert(e.which);
});
试试这个...
$(document).on("mousedown", function(e){
switch(e.which)
{
case 1:
alert("1");
break;
case 2:
alert("2");
-- middle button
break;
case 3:
alert("3");
break;
}
});
js小提琴:http://jsfiddle.net/rfornal/muqhnrt7/
然后,你可以做这样的事情...
$(document).on("mousedown", function(e){
switch(e.which)
{
case 1:
case 2:
alert("left or middle button");
break;
}
});
jsFiddle for this this: http://jsfiddle.net/rfornal/muqhnrt7/1/
>click
适用于中键单击(查找e.which === 2
),在允许它的浏览器上(这似乎不包括Firefox)。
对于右键单击,它是contextmenu
事件,您的浏览器可能支持也可能不支持该事件。
例:
// Responds to middle- and right-click (on browsers offering
// contextmenu), not to left-click (because of the `if`)
$("a").on("click contextmenu", function(e) {
if (e.type === "click" && e.which === 2) {
snippet.log("Got " + e.type + " event with e.which === 2");
} else if (e.type === "contextmenu") {
snippet.log("Got " + e.type + " event");
}
e.preventDefault();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<a href="#">Click Me</a>
<!-- Script provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>
$('a').click(function(e) {
e.preventDefault();
var isMiddle = event.which == null && event.button == 4 || /* IE */
event.which == 2; /* Others */
if (!isMiddle) return;
//
// Handle the middleclick
//
});
相关文章:
- Dojo:访问dijit.form.Select中单击的项目
- 在Jquery中单击传播失败
- 如何根据在模式中单击的按钮发送参数
- 如何删除父表行时;删除“;在React JS中单击按钮
- 引导菜单没有't在导航栏中单击打开
- 在窗口中单击按钮完成之前,光标不会停止.请继续卸载
- 在网页中单击复选框
- 如何在ASP.NET中单击按钮后激活启动选项卡
- 在css/javascript中单击,切换图像上的去饱和度
- 如何在重定向到asp.net中单击按钮的下一页之前应用javascript警报
- 树形结构,显示结构中单击的元素的文本
- 如何避免在自由jqgrid中单击单元格进行水平滚动编辑
- 在chrome中单击时设置SelectionRange不会在第二次单击时进行选择
- 在元素 SVG 中使用 JavaScript 或 jQuery 进行事件单击
- 在Qualtrics中单击外部链接时进行跟踪
- 如何在 angular js 中单击时调用自定义指令以进行文件上传
- 如何在块中单击按钮后进行不同的操作 块相同的名称类 (Jquery)
- 在多个元素中仅使用此元素进行ng单击
- 在ExtJS中单击标题对网格中的日期列进行排序
- 检测是否在子窗口中进行了单击