elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web (Moderador: #!drvy)
| | |-+  Hacer que un <tr> sea un link
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Hacer que un <tr> sea un link  (Leído 7,023 veces)
JonaLamper


Desconectado Desconectado

Mensajes: 394



Ver Perfil
Hacer que un <tr> sea un link
« en: 24 Enero 2017, 13:17 pm »

Buenas,

Digamos que tengo una tabla que se rellena dinámicamente con jQuery al realizar una petición al servidor y quiero que cada fila de la tabla sea un enlace (para que al pulsarlo me aparezcan más detalles sobre ese resultado).

¿Alguien sabe cómo podría hacer que una fila de una tabla sea un link?


Muchas gracias!  ;D


En línea

Utilizar palabras para hablar de palabras es como utilizar un lápiz para hacer un dibujo de ese lápiz sobre el mismo lápiz.
z3nth10n


Desconectado Desconectado

Mensajes: 1.583


"Jack of all trades, master of none." - Zenthion


Ver Perfil WWW
Re: Hacer que un <tr> sea un link
« Respuesta #1 en: 24 Enero 2017, 13:22 pm »

Buenas JonaLamper,

mmm... <tr> es la fila (es decir, el conjunto de celdas), te referiras a cada celda, si es así con añadir un input o un <a>, eso, si acuerdate de anular el evento del a, poniendo al final un return false...

De otra forma, no se a que te refieres, si puedes ejemplificar con images o codigo que ya tengas sería de utilidad :P

Un saludo.


En línea


Interesados hablad por Discord.
#!drvy
Moderador
***
Desconectado Desconectado

Mensajes: 5.850



Ver Perfil WWW
Re: Hacer que un <tr> sea un link
« Respuesta #2 en: 24 Enero 2017, 13:31 pm »

Si usas jQuery puedes usar el listener onClick.

Código
  1.    <tr class='showData' data-href='pagina1'>
  2.        <td>...</td>
  3.        <td>...</td>
  4.        <td>...</td>
  5.    </tr>
  6.  
  7.    <tr class='showData' data-href='pagina2'>
  8.        <td>...</td>
  9.        <td>...</td>
  10.        <td>...</td>
  11.    </tr>

Código
  1. $(function(){
  2.  
  3.  $('body').on('click', '.showData', function(event){
  4.  
  5.    event.preventDefault();
  6.    alert( $(this).data('href') );
  7.  
  8.  });
  9.  
  10. });
  11.  

PD: Nota como el listener (on), actual sobre body es el que busca .showData.. si se hace directamente ($('.showData').on..)) no te dispararía el evento en DOM añadido después de la carga inicial (ajax por ejemplo).

Saludos
« Última modificación: 24 Enero 2017, 13:33 pm por #!drvy » En línea

JonaLamper


Desconectado Desconectado

Mensajes: 394



Ver Perfil
Re: Hacer que un <tr> sea un link
« Respuesta #3 en: 24 Enero 2017, 16:55 pm »

Muchísimas gracias. Al final lo he conseguido de otra forma (ahora después lo pongo). Es que al final no hacia falta hacer que el <tr> fuese un link.


Otra pregunta: digamos que tengo una tabla que se rellena de forma dinámica con jQuery.

Código
  1.                    var fila = $("<tr id="+ curso.titulo +">");
  2.                      // Añadimos el texto obtenido de la base de datos
  3.                    fila.append($("<td>").text(curso.titulo));
  4.                    fila.append($("<td>").text(curso.localidad));
  5.                    fila.append($("<td>").text(curso.fecha_inicio));
  6.                    fila.append($("<td>").text(curso.fecha_fin));
  7.                    fila.append($("<td>").text(curso.plazas_disponibles));
  8.                    // Añadimos la fila al cuerpo de la tabla
  9.                    $("#tabla_cursos tbody").append(fila);

Digamos que es una tabla de cursos escolares, por ejemplo. Como vemos, cada <tr> se genera metiendo un id (que es el título del curso). Ahora, lo que pretendo es que, al pulsar en una fila, se ejecuta una determinada acción. Así que he pensado en obtener el id del <tr> sobre el que se pulse. Pero... no lo consigo. En primer lugar he probado a que me muestre por consola un mensaje cuando se pulse dentro de un <td>, y ni siquiera eso soy capaz de hacer.

Código
  1.  
  2.    $("td").on("click",function(){
  3.        console.log("Se ha pulsado en un td");
  4.    });
  5.  

La verdad es que no entiendo porqué este último código no me funciona, si es súper simple xD

Os dejo una foto para que os hagáis una idea de cómo es la tabla:



¿Alguien sabe cómo podría hacer todo esto?

Gracias de nuevo  :D
« Última modificación: 24 Enero 2017, 17:02 pm por JonaLamper » En línea

Utilizar palabras para hablar de palabras es como utilizar un lápiz para hacer un dibujo de ese lápiz sobre el mismo lápiz.
#!drvy
Moderador
***
Desconectado Desconectado

Mensajes: 5.850



Ver Perfil WWW
Re: Hacer que un <tr> sea un link
« Respuesta #4 en: 24 Enero 2017, 17:47 pm »

El problema, como ya te comente de forma muy mal escrita xD, es que el DOM agregado después de la carga inicial hay que capturarlo desde un elemento que si se haya cargado al principio.

Es decir:
Código
  1. $('#tabla_cursos').on('click', 'td', function(event){
  2.    var currentID = $(this).parent('tr').attr('id'); // Id del <tr>
  3.  
  4.    console.log('Se ha pulsado en un td');
  5.    console.log('El elemento pulsado tiene de id: ' + currentID);
  6. });

Eso suponiendo que #tabla_cursos la generas antes de la precarga.

Saludos
« Última modificación: 24 Enero 2017, 17:51 pm por #!drvy » En línea

JonaLamper


Desconectado Desconectado

Mensajes: 394



Ver Perfil
Re: Hacer que un <tr> sea un link
« Respuesta #5 en: 24 Enero 2017, 17:52 pm »

Oh! Muchas gracias, ya funciona.

Vaya, no tenía ni idea de eso (y tiene muchas consecuencias xD).

Sí, las etiquetas table son estáticas en el HTML  ;D
En línea

Utilizar palabras para hablar de palabras es como utilizar un lápiz para hacer un dibujo de ese lápiz sobre el mismo lápiz.
JonaLamper


Desconectado Desconectado

Mensajes: 394



Ver Perfil
Re: Hacer que un <tr> sea un link
« Respuesta #6 en: 24 Enero 2017, 21:01 pm »

Hola de nuevo  ;D

Me ha surgido un problemilla... Si el id estuviera compuesto por una cadena del tipo "Mi nombre", sólo coge "Mi" como parte del id. ¿Sabéis como podría hacer que cogiese toda la cadena?


¡Gracias!
En línea

Utilizar palabras para hablar de palabras es como utilizar un lápiz para hacer un dibujo de ese lápiz sobre el mismo lápiz.
#!drvy
Moderador
***
Desconectado Desconectado

Mensajes: 5.850



Ver Perfil WWW
Re: Hacer que un <tr> sea un link
« Respuesta #7 en: 24 Enero 2017, 22:40 pm »

Hola,

El problema con los id con espacio es que van en contra de las normas. Ni HTML4 ni HTML5 los permiten. De hecho HTML5 quitó bastantes restricciones pero mantuvo esa. Y es bastante razonable teniendo en cuenta que esta pensado para ser usado como una propiedad vía javascript.

De todos modos, haciendo pruebas veo que el attr() de jQuery si lo recoge (con espacios), al menos en Chrome.

Siempre puedes reemplazar los espacios por guiones a la hora de suministrar el id.. pero vamos.. para almacenar información compleja lo que te recomendaría es usar los atributos data-*.

Código
  1.    <tr data-curso='Batch en Linux 101' id='curso1'>
  2.        <td>...</td> <td>...</td>  <td>...</td>
  3.    </tr>
  4.  
  5.    <tr data-curso='Cocinar huevos para dummies' id='curso2'>
  6.        <td>...</td> <td>...</td>  <td>...</td>
  7.    </tr>


Código
  1. $('#tabla_cursos').on('click', 'td', function(event){
  2.    var _parent = $(this).parent('tr');
  3.  
  4.    var cursoID = _parent.attr('id');
  5.    var cursoTitulo = _parent.data('curso');
  6.  
  7.    console.log(cursoID + ' Titulo: ' + cursoTitulo);
  8. });

Saludos
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Komo hacer una imagen kon link?
Sugerencias y dudas sobre el Foro
X3sH 2 2,346 Último mensaje 14 Julio 2005, 10:20 am
por el-brujo
Hacer click en un link con webbrowser
Programación Visual Basic
naderST 3 2,402 Último mensaje 10 Mayo 2008, 12:07 pm
por ~~
Cómo hacer un link .mp3 pero que vaya a un .exe?
Análisis y Diseño de Malware
andres25cba 3 9,319 Último mensaje 25 Abril 2013, 06:48 am
por chelo87_ec
Link para windows 7 ultimate en español UN SOLO LINK
Windows
incooo 1 4,138 Último mensaje 30 Septiembre 2011, 17:50 pm
por Randomize
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines