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 },
],
...等等
我用 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 },
],
...等等