html - 表格行像链接

Max*_*rai 97 html css html-table hyperlink

我不能将我的表行设置为某些东西的链接.我只能使用css和html.我尝试了不同的东西,从div到另一个,但仍然不能使它工作.

Est*_*ber 170

您有两种方法可以做到这一点:

  • 使用javascript:

    <tr onclick="document.location = 'links.html';">

  • 使用锚点:

    <tr><td><a href="">text</a></td><td><a href="">text</a></td></tr>

我做了第二项工作:

table tr td a {
    display:block;
    height:100%;
    width:100%;
}
Run Code Online (Sandbox Code Playgroud)

要摆脱列之间的死空间:

table tr td {
    padding-left: 0;
    padding-right: 0;
}
Run Code Online (Sandbox Code Playgroud)

这是第二个例子的简单演示:DEMO

  • 由于OP说"只有css和html"我认为接受是第二个答案.请注意,如果没有border = 0,表格单元格之间会出现"缺少链接"的差距. (8认同)
  • <a>标签不允许其中的任何其他html元素.那么,我们如何链接一个包含更多表数据的整个表行?这样的事情:<tr> <a href=""> <td> Text </ td> <td> ..... </a> </ tr> ..我们不能这样吗? (5认同)
  • 我建议使用"display:inline-block"而不是block.通过块显示,我发现Chrome忽略了"高度:100%",并且如果同一行中的其他项目具有更高的高度,则实际上并未实现<td>可点击的整个高度.使其内联块修复了该问题,以及文本在表元素内被剪切的可能相关问题. (4认同)
  • 列之间的锚点仍然有死角空间(已通过Google Chrome版本40.0.2214.115 m测试) (2认同)

Ron*_*den 53

我自己做了一个自定义的jquery函数:

HTML

<tr data-href="site.com/whatever">
Run Code Online (Sandbox Code Playgroud)

jQuery的

$('tr[data-href]').on("click", function() {
    document.location = $(this).data('href');
});
Run Code Online (Sandbox Code Playgroud)

对我来说简单而完美.希望它能帮到你.

(我知道OP只想要CSS和HTML,但考虑jQuery)

编辑

与Matt Kantor同意使用数据attr.编辑上面的回答

  • 我会使用`data-href`或者其他一些东西. (13认同)
  • 要在悬停时添加手部效果,请将"tr [data-href] {cursor:pointer}"添加到样式表中 (6认同)
  • JSFiddle链接导致404. (2认同)

Gre*_*reg 26

如果您使用的是支持它的浏览器,则可以使用CSS将其<a>转换为表格行:

.table-row { display: table-row; }
.table-cell { display: table-cell; }

<div style="display: table;">
    <a href="..." class="table-row">
        <span class="table-cell">This is a TD... ish...</span>
    </a>
</div>
Run Code Online (Sandbox Code Playgroud)

当然,你只能将块元素放入其中<a>.你也不能将它与常规混合在一起<table>


sys*_*USE 13

如果必须使用表,可以在每个表格单元格中放置一个链接:

<table>
  <tbody>
    <tr>
      <td><a href="person1.html">John Smith</a></td>
      <td><a href="person1.html">123 Fake St</a></td>
      <td><a href="person1.html">90210</a></td>
    </tr>
    <tr>
      <td><a href="person2.html">Peter Nguyen</a></td>
      <td><a href="person2.html">456 Elm Ave</a></td>
      <td><a href="person2.html">90210</a></td>
    </tr>
  </tbody>
</table>
Run Code Online (Sandbox Code Playgroud)

并使链接填满整个单元格:

table tbody tr td a {
  display: block;
  width: 100%;
  height: 100%;
}
Run Code Online (Sandbox Code Playgroud)

如果您能够使用<div>s而不是表格,那么您的HTML可以更加简单,并且您不会在表格单元格之间的链接中获得"间隙":

<div class="myTable">
  <a href="person1.html">
    <span>John Smith</span>
    <span>123 Fake St</span>
    <span>90210</span>
  </a>
  <a href="person2.html">
    <span>Peter Nguyen</span>
    <span>456 Elm Ave</span>
    <span>90210</span>
  </a>
</div>
Run Code Online (Sandbox Code Playgroud)

这是与<div>方法一起使用的CSS :

.myTable {
  display: table;
}
.myTable a {
  display: table-row;
}
.myTable a span {
  display: table-cell;
  padding: 2px; /* this line not really needed */
}
Run Code Online (Sandbox Code Playgroud)


Aar*_*lla 12

通常的方法是将一些JavaScript分配给元素的onClick属性TR.

如果你不能使用JavaScript,那么你必须使用一个技巧:

  1. 将相同的链接添加到TD同一行中的每一行(链接必须是单元格中最外层的元素).

  2. 将链接转换为块元素: a { display: block; width: 100%; height: 100%; }

后者将强制链接填充整个单元格,因此单击任意位置将调用链接.


Don*_*nut 7

您不能<td>使用<a>标记包装元素,但可以通过使用onclick事件来调用函数来完成类似的功能.这里有一个例子,类似这个函数:

<script type="text/javascript">
function DoNav(url)
{
   document.location.href = url;
}
</script>
Run Code Online (Sandbox Code Playgroud)

并将它添加到您的表中,如下所示:

<tr onclick="DoNav('http://stackoverflow.com/')"><td></td></tr>
Run Code Online (Sandbox Code Playgroud)

  • 使用onClick实现此类目的的一个问题是用户无法再使用鼠标中键或按住Control键单击以在新选项卡中打开链接(这对于我们这些喜欢以这种方式打开链接的人来说真的很令人沮丧) .另一方面,没有理由通过创建只执行一个简单命令的函数来使事情复杂化.如果您要这样做,只需将"document.location.href = ..."直接放在onclick属性中即可. (20认同)

小智 7

来自sirwilliam的回答最适合我.我改进了Javascript,支持热键Ctrl + LeftClick(在新选项卡中打开页面).事件ctrlKey由PC使用,metaKey由Mac使用.

使用Javascript

$('body').on('mousedown', 'tr[url]', function(e){
    var click = e.which;
    var url = $(this).attr('url');
    if(url){
        if(click == 2 || (click == 1 && (e.ctrlKey || e.metaKey))){
            window.open(url, '_blank');
            window.focus();
        }
        else if(click == 1){
            window.location.href = url;
        }
        return true;
    }
});
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/vlastislavnovak/oaqo2kgs/