如何使表格中的整行都可点击作为链接?

发布时间 2023-11-20 19:07:17作者: 小满独家

内容来自 DOC https://q.houxu6.top/?s=如何使表格中的整行都可点击作为链接?

我正在使用 Bootstrap,但以下代码无效:

<tbody>
    <a href="#">
        <tr>
            <td>Blah Blah</td>
            <td>1234567</td>
            <td>£158,000</td>
        </tr>
    </a>
</tbody>


作者注释 I

请查看下面的其他答案,特别是不使用 jQuery 的答案。

作者注释 II

为了记录而保存,但在 2020 年肯定是 错误 的方法。(即使在 2017 年也不符合惯用法)

原始答案

你正在使用 Bootstrap,这意味着你正在使用 jQuery :^),所以一种方法是:

<tbody>
    <tr class='clickable-row' data-href='url://'>
        <td>Blah Blah</td> <td>1234567</td> <td>£158,000</td>
    </tr>
</tbody>

jQuery(document).ready(function($) {
    $(".clickable-row").click(function() {
        window.location = $(this).data("href");
    });
});

当然,你不必使用 href 或切换位置,你可以在 click 处理程序函数中做任何你想做的事情。阅读有关 jQuery 的内容以及如何编写处理程序;

使用 class 而不是 id 的优点是,你可以将解决方案应用于多个行:

<tbody>
    <tr class='clickable-row' data-href='url://link-for-first-row/'>
        <td>Blah Blah</td> <td>1234567</td> <td>£158,000</td>
    </tr>
    <tr class='clickable-row' data-href='url://some-other-link/'>
        <td>More money</td> <td>1234567</td> <td>£800,000</td>
    </tr>
</tbody>

你的代码库不会改变。同一个处理程序将处理所有行。

另一个选项

你可以像这样使用 Bootstrap jQuery 回调函数(在 document.ready 回调中):

$("#container").on('click-row.bs.table', function (e, row, $element) {
    window.location = $element.data('href');
});

它的优点是不会在表格排序时重置(使用其他选项发生的情况)。


注意

自此发布以来,window.document.location 已经过时,使用 window.location 替代。