如何将超链接添加到表格行 <tr>

Posted

技术标签:

【中文标题】如何将超链接添加到表格行 <tr>【英文标题】:How to add hyperlink to table row <tr> 【发布时间】:2011-06-05 16:29:32 【问题描述】:

我有一个表格,其表格行 &lt;tr&gt; 在循环中生成以形成多行。

我想为每个&lt;tr&gt; 提供单独的&lt;a&gt; 链接。由于在表中我们只能向&lt;td&gt; 添加数据,因此我无法实现。

还有其他方法可以实现吗?

【问题讨论】:

对于仅 php 的修复,只需将每行所需的链接添加到该行中的每个单元格。 安德鲁,这是一个仅 PHP 的修复方法吗? 【参考方案1】:

html

<table>
    <tr href="http://myspace.com">
      <td>MySpace</td>
    </tr>
    <tr href="http://apple.com">
      <td>Apple</td>
    </tr>
    <tr href="http://google.com">
      <td>Google</td>
    </tr>
</table>

javascript 使用 jQuery 库:

$(document).ready(function()
    $('table tr').click(function()
        window.location = $(this).attr('href');
        return false;
    );
);

你可以在这里试试这个:http://jsbin.com/ikada3

CSS(可选):

table tr 
    cursor: pointer;

或使用data-href 代替href 的HTML 有效版本:

<table>
    <tr data-href="http://myspace.com">
      <td>MySpace</td>
    </tr>
    <tr data-href="http://apple.com">
      <td>Apple</td>
    </tr>
    <tr data-href="http://google.com">
      <td>Google</td>
    </tr>
</table>

JS:

$(document).ready(function()
    $('table tr').click(function()
        window.location = $(this).data('href');
        return false;
    );
);

CSS:

table tr[data-href] 
    cursor: pointer;

【讨论】:

我遇到的唯一问题是 href 在技术上不是表格行的有效属性。 此解决方案在没有 javascript 的情况下无法工作,并且盲人无法访问。 使用data-href 可以解决无效属性的问题。 我对@9​​87654332@ 和data-href 有疑问:如果我使用jquery $('table tr').first() 进行选择,那么hrefdata-href 属性就会消失,因此我无法通过.attr('href') 访问它们或data('href') 另一个问题是你打破了中间点击。【参考方案2】:

您可以使用data-href 脚本在任何html 元素中添加href。它使 html 有效,因为它只向元素添加 data-href 属性。

https://github.com/nathanford/data-href/

【讨论】:

【参考方案3】:

最好的建议是在生成表格时添加标签。如果您需要在表格呈现后执行此操作并且您想使用 javascript,您可以随时添加类似

var mytable = document.getElementById("theTable")
var myrows = mytable.rows

for(i=0;i < myrows.length;i++)

  var oldinner;
  oldinner = myrows[i].cells[0].innerHTML;
  myrows[i].cells[0].innerHTML = "<a>" + oldinner + "</a>";

或者如果你需要对每个单元格都这样做,你总是可以的

var mytable = document.getElementById("theTable")
var myrows = mytable.rows

for(i=0;i < myrows.length;i++)

  mycells = myrows[i].cells;

  for(a=0;a < mycells.length;a++)
  
    var oldinner;
    oldinner = mycells[a].innerHTML;
    mycells[a].innerHTML = "<a>" + oldinner + "</a>";
  

希望对你有帮助

【讨论】:

【参考方案4】:

利用@ahmet2016 并保持其 W3C 标准。

HTML:

<tr data-href='LINK GOES HERE'>
    <td>HappyDays.com</td>
</tr>

CSS:

*[data-href] 
    cursor: pointer;

jQuery:

$(function()       
    $('*[data-href]').click(function()
        window.location = $(this).data('href');
        return false;
    );
);

【讨论】:

我对@9​​87654324@ 和data-href 有疑问:如果我使用jquery $('table tr').first() 进行选择,那么hrefdata-href 属性就会消失,所以我无法通过.attr('href') 访问它们或data('href')【参考方案5】:

我发现将表格行转换为链接的最简单方法是将 onclick 属性与 window.location 结合使用。

<table>
<tr onclick="window.location='/just/a/link.html'">
<td></td>
</tr>
</table>

【讨论】:

【参考方案6】:

添加

并将显示样式更改为 display:block

并为这样添加相同的大小:

CSS:

#Table a 
display:block;

#Table td 
width:100px;
hright:100px

HTML:

<table id="Table">
    <tr><td><a onclick="" href="#"> cell </a></td></tr>
    <tr><td> cell </td></tr>
</table>

【讨论】:

【参考方案7】:

您可以按照 Nicole 的建议简单地生成 with 和 inside:

<tr><td><a href="url">title of the url</a></td></tr>

或者把 url 放在 tr 标签中,比如 包含 jQuery

$('tr.clickable').click(function()
  window.location = $(this).attr("title");
);

点击后将您带到该页面(基本上是破解 tr 像标签一样工作(只是一个想法,永远不要真正尝试它。

【讨论】:

【参考方案8】:

jQuery.wrap将返回的锚点添加到td,然后添加到tr和jQuery.appendTotable

$('ith anchor element in array').wrap('<td />').wrap('<tr />').appendTo('table#table_id');

【讨论】:

【参考方案9】:

PHP:

echo "<tr onclick=\"window.location='".$links[$i]."'\">......";

没有 jQuery 的 Javascript:

 x=1;
 .
 .
 for (...) 
   var tr=document.createElement('tr');
   tr.onclick=function()  window.location='page'+(x++)+'.html'
   tr.style.cursor='pointer';
 .
 

会让用户点击每一行 您也可以使用数组来加载页面:

 x=0;
 var pages=["pagea.html","pageb.html"]
 .
 .
 for (...) 
   var tr=document.createElement('tr');
   tr.onclick=function()  window.location=page[x++];
   tr.style.cursor='pointer';
 .
 

【讨论】:

【参考方案10】:

我同意第一个回复,需要更多信息。但如果你只是想制作一个链接表,你可以这样做

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

【讨论】:

【参考方案11】:
<tr><td><a></a></td></tr>

这个?

【讨论】:

【参考方案12】:

如果您要让每个 &lt;tr&gt; 可点击,您可以向每个 &lt;tr&gt; 添加一个 click 事件,或者更好的是,向管理的 table 添加一个 .delegate() 处理程序点击其&lt;tr&gt; 元素。

$('#myTable').delegate('tr','click',function() 
    alert( 'i was clicked' );
);

此代码假定您的table 具有myTable ID:

<table id="myTable">
    <tr><td> cell </td></tr>
    <tr><td> cell </td></tr>
</table>

如果这不是您的意思,请澄清您的问题,并发布您正在使用的相关 JavaScript 代码。

【讨论】:

对于那些从 jQuery 1.7 开始阅读本文的人:“从 jQuery 1.7 开始,.delegate() 已被 .on() 方法取代。” api.jquery.com/delegate

以上是关于如何将超链接添加到表格行 <tr>的主要内容,如果未能解决你的问题,请参考以下文章

描述Setter插件 - 将超链接添加到网络文件夹

JQuery 工具可滚动:无法将超链接添加到图像

jquery如何给指定的表格增加行,然后给每行插入数据,而且其中一行能有超链接的。

为 HTML 表格行添加边框,<tr>

用于在 HTML 表格行之间添加行的 Jquery 语法

在jQuery中添加表格行