Javascript 如果用户单击整行上的折叠按钮,如何禁用整行上的onclick?
如何防止单击按钮后调用window.locationJavascript 如果用户单击整行上的折叠按钮,如何禁用整行上的onclick?,javascript,twitter-bootstrap,Javascript,Twitter Bootstrap,如何防止单击按钮后调用window.location <tr onclick="window.location='www.google.com'"> <td>Toggle Button</td> <td style="text-align:left;"> <button class="btn btn-link text-info" data-toggle="collapse" data-target="#
<tr onclick="window.location='www.google.com'">
<td>Toggle Button</td>
<td style="text-align:left;">
<button class="btn btn-link text-info" data-toggle="collapse" data-target="#company@item.Id">
Details
</button>
<div id="myitems5" class="collapse">
items
items
items
</div>
</td>
</tr>
最低限度的改变是:
<tr onclick="if (!event.target.closest('button[data-toggle]')) { window.location = '//www.google.com'; }">
在这两种情况下,代码都会使用它,您可能需要在过时的浏览器上对其进行多填充。防止onclick调用的最佳方法是了解它的确切用途。如果您需要调用网站,请使用@hcheung-当然,您不能将链接环绕在表行上。在一般情况下,我非常同意使用链接而不是伪造链接更好,不过。@T.J.Crowder是的,但我不是这么建议的。@hcheung-你是建议在其中一个单元格中使用链接?而是更改用户体验,但提高可访问性,在新窗口中打开,…:-@T.J.Crowder噢,拜托,OP没有提到任何UX,也没有提供任何JS代码。我只是想提供一个方向,并希望对OP的澄清有所澄清。
theTable.addEventListener(function(e) {
var tr = e.target.closest("tr");
if (tr && this.contains(tr)) {
var btn = e.target.closest("button[data-toggle]");
if (!btn || !tr.contains(btn)) {
window.location = "//www.google.com";
}
}
});