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

时间:2019-03-14 10:01:01

标签: javascript jquery

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

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);
 });

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

我还有另一个代码段,可以正常工作

if(count($user = \App\User::where('email',$request->email)->first()) > 0)
\\Login Logics like Auth::LoginUsingId($user->id)
elseif(count($user = \App\UserInfo::where('phone_number',$request->phone_number)->first()) > 0))
\\Login Logics like Auth::LoginUsingId($user->id)

谢谢!

2 个答案:

答案 0 :(得分:0)

如果您要检查中间按钮的点击,请使用jQuery检查此代码

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

此问题Triggering onclick event using middle click

如果您想检查鼠标,可以检查其他@KyleMit答案 Detect middle button click (scroll button) with jQuery

答案 1 :(得分:0)

@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()。也许这是第二个作品起作用的原因吗?