【问题标题】:JS Always getting the same event object "e" parameter with mousedownJS总是用mousedown获取相同的事件对象“e”参数
【发布时间】:2019-08-05 04:12:53
【问题描述】:

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

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)。我怎样才能得到正确的行?

我还有另一个代码 sn-p,效果很好

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

提前致谢!

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

    如果你想用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

    【讨论】:

      【解决方案2】:

      @Jordi Jordi(因为我现在无法发表评论):根据 JQuery 的文档,click & mousedown 都可以。

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

      LClick 显示 1,Middle 显示 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 "row" 将包含 TR,表示您只需单击的行。

      编辑:请注意,您的第二个代码 sn-p 不包括 e.preventDefault()。也许这就是第二个起作用的原因?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-05-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多