我无法将表格行设置为链接,只能使用CSS和HTML。我尝试了从在行中使用div到其他方法,但仍无法使其正常工作。
我无法将表格行设置为链接,只能使用CSS和HTML。我尝试了从在行中使用div到其他方法,但仍无法使其正常工作。
使用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%;
}
为了消除列之间的空白区域:table tr td {
padding-left: 0;
padding-right: 0;
}
这是第二个示例的简单演示:演示
我自己制作了一个自定义的jQuery函数:
<tr data-href="site.com/whatever">
$('tr[data-href]').on("click", function() {
document.location = $(this).data('href');
});
这对我来说很容易且完美。希望它也能帮到你。
(我知道楼主只想要CSS和HTML,但请考虑使用jQuery)
同意Matt Kantor使用data属性。已经编辑了上面的答案。
data-href
或类似的东西。 - Matt Kantor<table class='tr_link' >
,并在CSS中为.tr_link{cursor:pointer}
以获得最佳使用效果。 - Bagovatr[data-href] { cursor: pointer }
添加到您的样式表中。 - OverCoder如果您使用支持的浏览器,可以使用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>
当然,你不能在<a>
标签中嵌套块级元素。同时,你也不能将其与常规的<table>
标签混合使用。
如果你必须使用表格,可以在每个表格单元格中放置一个链接:
<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>
并使链接填满整个单元格:
table tbody tr td a {
display: block;
width: 100%;
height: 100%;
}
如果您可以使用 <div>
而非表格,您的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>
这是与<div>
方法相关的CSS:
.myTable {
display: table;
}
.myTable a {
display: table-row;
}
.myTable a span {
display: table-cell;
padding: 2px; /* this line not really needed */
}
TR
元素的onClick
属性。TD
中添加相同的链接(链接必须是单元格中最外层的元素)。
2. 将链接转换为块元素:a { display: block; width: 100%; height: 100%; }
后者将强制链接填满整个单元格,以便在任何地方单击都会调用该链接。来自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;
}
});
Example
你不能用 <a>
标签包裹 <td>
元素,但你可以使用 onclick
事件来调用一个函数实现类似的功能。可以参考这个例子:here,像这样的函数:
<script type="text/javascript">
function DoNav(url)
{
document.location.href = url;
}
</script>
然后像这样将其添加到您的表格中:
<tr onclick="DoNav('http://stackoverflow.com/')"><td></td></tr>
我知道这个问题已经有答案了,但是我仍然不喜欢这个页面上的任何解决方案。对于使用JQuery的人,我提供了一种最终解决方案,使您可以为表格行提供几乎与标签相同的行为。
这是我的解决方案:
jQuery 您可以将此添加到标准包含的javascript文件中
$('body').on('mousedown', 'tr[url]', function(e){
var click = e.which;
var url = $(this).attr('url');
if(url){
if(click == 1){
window.location.href = url;
}
else if(click == 2){
window.open(url, '_blank');
window.focus();
}
return true;
}
});
HTML 现在您可以在 HTML 中的任何 <tr>
元素中使用此功能。
<tr url="example.com">
<td>value</td>
<td>value</td>
<td>value</td>
<tr>
document.querySelector('tr[url]').addEventListener("mousedown", function(e){ var click = e.which; var url = this.getAttribute("url"); if(url){ if(click == 1){ window.location.href = url; } else if(click == 2){ window.open(url, '_blank'); window.focus(); } return true; } });
- Ramon Bakker<table>
<tr class="trLink">
<td>
<a href="#">Something</a>
</td>
</tr>
</table>
CSS:
tr.trLink {
cursor: pointer;
}
tr.trLink:hover {
/*TR-HOVER-STYLES*/
}
tr.trLink a{
display: block;
height: 100%;
width: 100%;
}
tr.trLink:hover a{
/*LINK-HOVER-STYLES*/
}
这样,当有人用鼠标悬停在一个TR上时,整行(和其中的链接)都会显示悬停样式,他看不到有多个链接。
希望能对某些人有所帮助。
Fiddle 在此处
这样可以避免在 tr 中重复链接 - 只需从第一个 a 中提取即可。
$(".link-first-found").click(function() {
var href;
href = $(this).find("a").attr("href");
if (href !== "") {
return document.location = href;
}
});