使表格行成为可点击的链接,但让TD中的链接仍然工作
Make table row clickable link, but let links in TD still work
第一个要求是使表行表现得像一个可点击的链接。
各种好的来源指出,你必须使用javascript来实现这一点,我选择了这一个使表行可点击
它使用jQuery和TR标签中的link-data属性。
然而,我希望做任何<在TD单元格内的a>标签链接也能正常工作。期望的结果是,如果你点击表中的一个链接,它正常工作,但如果你点击TR上的其他任何地方,它会转到link-data url。在TD单元格内的a>
这是我目前拥有的,但是任何在行的任何地方点击,链接或不链接到数据链接地址。
$("tr[data-link]").click(function() {
window.location = this.dataset.link;
});
<tr class="clickable-row" data-link="/invoices/10">
<td>6</td>
<td>2014-06-09</td>
<td></td>
<td>£343,242.00</td>
<td>£68,640.00</td>
<td><a href="/jobs/770">0453</a></td>
</tr>
我想在jQuery/Javascript
你应该这样做:
$("tr[data-link]").click(function(e) {
if(e.toElement.tagName=='A') return
window.location = this.dataset.link;
});
如果用户单击A元素,函数将不执行(返回)。
Amina的答案仍然是正确的。但是自从使用它之后,我发现了一个后续的bug,我想我应该指出来。
IE给(e)一个不同于其他浏览器的对象。因此,要使IE使用这种技术,您需要在JavaScript中添加以下三行代码来预过滤事件对象。$("tr[data-link]").click(function(e) {
// Catch where i.e. doesnt give us the clicked object.
var elem, evt = e ? e:event;
if (evt.srcElement) elem = evt.srcElement;
else if (evt.target) elem = evt.target;
// If Anchor, or form input, return and do normal stuff
if(elem.tagName=='A' || elem.tagName=='INPUT') return;
window.location = this.dataset.link;
});
还要注意额外的tagName=='INPUT'是我自己将来添加的,因此单击中的任何输入字段也将被忽略。
相关文章:
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- 如何使用jQuery自动打开页面上的所有链接
- 动态地改变“”的URL;添加新项目”;链接使用javascript/jquery
- jquery动画可以通过编程链接吗
- 在单击href链接的同时下载文件
- 将内联块元素居中,并在 td 内部使用链接
- 可以使用javascript将html td更改为链接
- 如果td'这是jquery中的一个超链接
- 如何使用JavaScript在HTML表格中获取td内部的链接文本
- 数据表点击td或td内的(链接)
- 我如何制作一组<td>s可在Rails中链接
- HTML电子邮件模板解决方案到表TD中的javascript链接
- Jquery-将类添加到<td>如果它包含链接Wordpress
- 如何使td链接在新选项卡中打开
- 使表格行成为可点击的链接,但让TD中的链接仍然工作
- 用相同的超链接包裹td中的超链接
- 使用jquery制作td链接
- 将TD更改为链接
- 如何使整个td成为一个链接
- 单击td中的链接时,如何更改td的背景色