table 行的 href 上的 onClick 事件

onClick event on table row's href

我用 DataTables 创建了一个 table,每行中的文档都是 href 并由本地 JSON 数据填充的。

我有一个上下文菜单,其中一个选项是 "Open a Document",这与单击 href 并以这种方式打开文档的效果相同。

我正在尝试获取将由 onClick 事件触发的属性(或正确的东西)。但是,由于 table 数据已集成到 DataTables 中,我不确定我将如何进行。有什么想法吗?

正在呈现数据表:

$('#km-table-id').DataTable( {
      columns: [
        // { data: "Blank" },
        { data: "Categories" }, // hidden
        { data: "Blank" },
        { data: "Titles" }
      ],
      columnDefs: [
        {
          data: "Path", 
          ordering:  true, targets: [2],
          render: function(data, type, row) { // ---- wraps docs in anchors
            return $('<a>')
              .attr({target: "_blank", href: row.Path})
              .text(data)
              .wrap('<div></div>')
              .parent()
              .html();
          },
          targets: [2]
        },
        { searchable: true, targets: [0], visible: false },
      ],
      data: tableRes,
      language: { searchPlaceholder: "Search All Documents" },
      lengthMenu: [ 10, 25, 50, 100, 250, 500 ],
      order: [],
      pageLength: 500,
      paging: true,
      pagingType: "full_numbers"
    });

正在尝试通过上下文菜单打开文档 onClick:

$("li[data-action='open']").click(function(evt) {
      $(this).attr({target: "_blank", href: row.Path})
    });

HTML 上下文菜单:

<ul class="custom-menu">
    <li data-action="open">Open Document</li>
    <li data-action="add" id="add-id">Set As Favorite</li>
    <li data-action="email">Email Document</a></li>
  </ul>

更新:我找到了一个(可行的)解决方案。

基本上 "Titles" 的 DataTable 列必须位于最后一个位置才能与每个复选框正确对应。我确信有一个解决方案,我可以在后面添加列,并且附加的复选框可以工作,但目前还可以。

$('#km-table-id').DataTable( {
      columns: [
        { data: "Blank" },
        { data: "Categories" }, // hidden
        { data: "Blank" },
        { data: "Titles" } // MUST be in last position to respond w/ checkboxes
      ],
      columnDefs: [
        {
          data: "Path", 
          ordering:  true, targets: [3],
          render: function(data, type, row) {
            return $('<a>')
              .attr({target: "_blank", href: row.Path})
              .text(data)
              .wrap('<div></div>')
              .parent()
              .html();
          },
          targets: [3]
        },
        { searchable: true, targets: [1], visible: false },
      ],

...等等