Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果用户单击整行上的折叠按钮,如何禁用整行上的onclick?_Javascript_Twitter Bootstrap - Fatal编程技术网

Javascript 如果用户单击整行上的折叠按钮,如何禁用整行上的onclick?

Javascript 如果用户单击整行上的折叠按钮,如何禁用整行上的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="#

如何防止单击按钮后调用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="#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";
        }
    }
});