¿Cuál es la mejor manera de hacer que una fila de una tabla HTML sea un enlace? Actualmente estoy usando jquery para cebra stripe las filas y también para resaltar onmouseover/off row seleccionado, así que si JavaScript es la respuesta, usa jquery.Enlace de la fila de la tabla HTML
Respuesta
sólo tiene que utilizar CSS:
<style>
table.collection {width:500px;border-collapse:collapse;}
table.collection tr {background-color:#fff; border-bottom: 1px #99b solid;}
table.collection tr:hover {background-color:#ffe;}
table.collection td {display:table-cell;border-bottom: 1px #99b solid; padding:0px;}
table.collection td a {text-decoration:none; display:block; padding:0px; height:100%;}
</style>
<table class="collection">
<tr>
<td><a href="#">Linky1</a></td>
<td><a href="#">Data1</a></td>
</tr>
<tr>
<td><a href="#">Linky2</a></td>
<td><a href="#">Data2</a></td>
</tr>
</table>
La mejor solución, de lejos. El navegador aún ve esto como un enlace, así que' abrir en pestaña 'o' copiar enlace 'funcionará. ¡Las otras soluciones rompen mi navegador! Hay posibilidades para un JQuery solución que automatiza lo anterior mediante la manipulación de DOM. –
Tengo problemas con esta solución. Si una de las celdas de la tabla contiene suficiente contenido para envolver líneas, la altura de las celdas vecinas no se extenderá a la altura completa. solución para este caso? – troelskn
Esto suena como un problema en el modo de las peculiaridades de IE. No veo esto en Firefox o IE 7-8 con "- // W3C // DTD XHTML 1.0 Strict // EN". También puede no funcionar en IE 6 (pero ¿qué hace?) –
Registre un controlador de eventos onclick para el elemento tr. Algo como esto usando jQuery:
$("tr").bind("click", function(){
window.location = 'http://www.example.com/';
});
¿Esto no lo vincula a la misma ubicación en cada clic de fila? – RuudKok
Puede usar una entrada oculta en cada tr para almacenar la url. –
De hecho, esto unirá el mismo enlace a cada fila, modifíquelo según sus necesidades. –
$(document).ready(function(){
$("tr").click(function(){
/* personally I would throw a url attribute (<tr url="http://www.hunterconcepts.com">) on the tr and pull it off on click */
window.location = $(this).attr("url");
});
});
Ok, eso es genial, pero ¿cómo lo abren en una nueva ventana? Como si fuera un ... también de esta manera (solo si hace clic en
podría use 'window.open' – hunter
El problema surge cuando las personas intentan hacer clic en el' tr' del mismo modo que hacen clic en un elemento 'a' (es decir, shift + clic o cmd + clic para pestañas nuevas, etc.) – hohner
<td>
<a href="/whatevs/whatevs">
<div class="tdStreacher"> linkName
</div>
</a>
</td>
.tdStreacher{
height: 100%;
width: 100%;
padding: 3px;
}
De esta manera, toda la superficie de cada célula actuará como enlace, por lo tanto, el conjunto fila actuar como un enlace.
no vio la solución aceptada ¿eh? No funciona en 1999/xhtml porque height: 100% no abarca necesariamente la celda completa. – dube
Aquí hay un plugin jQuery basado en la solución de Nick.
(function($) {
$.fn.linkWholeRows = function() {
// for each object
return this.each(function() {
// for each row
$(this).find('tbody tr').each(function() {
// get the first link's href
var href = $(this).find('td > a').attr('href');
// if none found then
if (href === undefined) {
return true; // continue
}
// wrap all cells with links that do not already have a link
$(this).children().not(':has(a)').each(function() {
$(this).contents().wrapAll('<a href="' + href + '" />');
});
// apply the row's height to all links
// in case that the cells' content have different heights
var height = $(this).children().css('height');
$(this).find('td > a').each(function() {
$(this).css('height', height);
// do not forget to apply display:block to the links
// via css to make it work properly
});
}); // each row
}); // each object
};
})(jQuery);
Espera que las filas se envuelvan en tbody's. La altura se establece explícitamente, ya que la solución original de Nick no funcionó para mí en las celdas vecinas con diferentes alturas. Asegúrate de diseñar elementos a como bloques. Si desea aplicar el relleno, que se aplican a los a-elementos en vez de celdas de la tabla:
a {
display: block;
padding: 0.25em 0.5em;
}
tbody td { padding: 0; }
simplemente llaman
$('#your-table').linkWholeRows();
espero que ayude. Saludos, Richard
No es necesario jQuery si no te importa la sustitución de la tabla de elementos genéricos:
<style>
.table {
border-collapse: collapse;
border-spacing: 0;
display: table;
}
.tr {
display: table-row;
}
.td {
display: table-cell;
}
</style>
<section class="table">
<a class="tr" href="#">
<div class="td">
A
</div>
<div class="td">
B
</div>
<div class="td">
C
</div>
</a>
</section>
No conserva el significado semántico que obtiene utilizando las etiquetas table, tr y td con esta solución. – Andreas
- 1. contador de filas para la fila de la tabla html
- 2. ¿cómo le doy un nombre de enlace a una fila de la tabla html?
- 3. ¿Vincular toda la fila de la tabla?
- 4. Destacando la fila pulsada de una tabla HTML rayas
- 5. Convierta la primera fila de la tabla HTML en una fila de encabezado para cada tabla usando XSLT
- 6. fila de la tabla clon
- 7. fila de datos anexados después de la primera fila de una tabla HTML
- 8. El ancho de la columna HTML cambia cuando la fila de la tabla está oculta
- 9. altura Fix de una fila de tabla en la tabla HTML
- 10. jQuery Fila de la tabla clon
- 11. tabla de imagen de la fila fondo
- 12. Fila aleatoria de Oracle de la tabla
- 13. Tabla HTML con botón en cada fila
- 14. ¿Cómo eliminar la fila actual de la tabla en jQuery?
- 15. establecer la altura de la fila de la tabla
- 16. obtener una sola fila de la tabla
- 17. FadeOut y eliminar la fila de la tabla
- 18. Recuperar el índice de la fila de la tabla de la fila actual
- 19. ¿Cómo alinear el centro del texto en la fila de la tabla html?
- 20. posición de la fila de la tabla de desbordamiento CSS
- 21. seleccionando la fila de la tabla Excepto la primera
- 22. jQuery eliminar columna de la tabla HTML
- 23. ¿Eliminar la fila de la lista eliminar fila de la tabla base - MYsql?
- 24. Jquery agregue la fila de la tabla después de la fila que llama al jquery
- 25. tabla html encontrar fila antes de usar jquery
- 26. Cambio propiedad de presentación fila de la tabla
- 27. Hacer una fila de la tabla en un enlace en Rails
- 28. BeautifulSoup análisis de HTML en la tabla
- 29. ¿Parse la tabla HTML a la lista de Python?
- 30. cómo eliminar la fila de la tabla en el diseño de la tabla en android
Google Search consulta 'enlace jQuery tr' me dieron algunas soluciones ya. Tal vez deberías probarlo también? No respondo tu pregunta porque no tengo ninguna experiencia en absoluto, así que podría estar diciendo algo 'estúpido' ;-) – RuudKok
sí, te da resultados, pero no consideraría la mayoría de las respuestas. Si busco en google "dog poop tr link" también obtengo "respuestas". :) – hacintosh
Las dos soluciones propuestas de JQuery son problemáticas para la usabilidad y la accesibilidad. La solución CSS es mejor para cualquier sitio web público. Vea mis comentarios allí. –