将HTML表格行包装在标签中

11 浏览
0 Comments

问题的出现原因是因为浏览器遵循W3C规范,只允许<table>标签的直接子元素是<tr>标签。为了解决这个问题,可以有以下几种方法:

第一种方法是在每个<td>标签内部添加一个<a>标签,指向相同的URL,如下所示:

<table>
    <tr>
        <td>
            <a href="http://url/stuff">
                第一列
            </a>
        </td>
        <td>
            <a href="http://url/stuff">
                第二列
            </a>
        </td>
    </tr>
</table>

第二种方法是使用JavaScript在<tr>标签上绑定一个onClick事件处理程序。以下是一个使用jQuery的示例:

$('table tr').click(function() {
    window.location = 'http://location/here';
});

第三种方法是使用事件委托(适用于jQuery 1.7+):

$('table').on('click', 'tr', function() {
    window.location = 'http://location/here';
});

需要注意的是,使用JavaScript的解决方法可能会有一些问题。用户无法使用Ctrl键+单击或Shift键+单击在新标签页或新窗口中打开链接。可以通过捕获点击事件并检测event.metaKeyevent.ctrlKey来解决这个问题,但有时可能会被弹出窗口拦截器阻止。详情可以参考stackoverflow.com/a/2445640/436014

0