繁体   English   中英

JS总是通过mousedown获得相同的事件对象“ e”参数

[英]JS Always getting the same event object “e” parameter with mousedown

我正在尝试使用DataTable( https://datatables.net/ )上的JQuery处理鼠标中键单击事​​件。 这是我的代码。

var tbl = document.getElementById("entries");
$(tbl).on('mousedown', function (e) { 
     e.preventDefault();
     if (e.which == 2) {
         var table = window.table_entries;
         var data = table.dataTable.row($(e.detail)).data();
         window.open("/plugin/Changes/@Model.Revision/" + data.BuildId, '_blank');
     }
});

无论我在哪里单击,我总是得到相同的BuildId(284)。 如何获得正确的行?

我还有另一个代码段,可以很好地工作

tbl.addEventListener("cdt.click", function (e) {
        var table = window.table_entries;
        var data = table.dataTable.row($(e.detail)).data();
        window.open("/plugin/Changes/@Model.Revision/" + data.BuildId, '_blank');
        window.location("/plugin/Changes/@Model.Revision/" + data.BuildId);
 });

提前致谢!

如果要检查中间按钮,请单击jquery检查此代码

$("#foo").on('click', function(e) { 
  if( e.which == 2 ) {
  e.preventDefault();
  alert("middle button"); 
  }
});

从这个问题开始, 使用中间点击触发onclick事件

而且,如果您想检查鼠标,则可以检查其他@KyleMit答案使用jQuery检测中键单击(滚动按钮)

@Jordi Jordi(因为我现在无法评论):根据JQuery的文档,单击和鼠标按下均可以。

$('h1').on('mousedown', function(e) {
    alert(e.which);
});

将为LClick显示1,为中显示2,为RClick显示3。 但这不是问题。 如果您获得相同的BuildId,那是因为选择器不是很好的选择器。

如果要搜索准确的行,则应像这样更改选择器:

$('td').on('mousedown', function (e) { 
    e.preventDefault();
    if (e.which == 2) {
        // Here you should get the row like this :
        var row = $(this).parent();
    }
});

现在,您要做的就是执行此操作。 var“行”将包含TR,表示您只需单击一下行。

编辑:请注意,您的第二个代码段不包含e.preventDefault()。 也许这是第二个作品起作用的原因吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM