Foros del Web » Programando para Internet » Jquery »

Insertar codigo dinámico con jQuery

Estas en el tema de Insertar codigo dinámico con jQuery en el foro de Jquery en Foros del Web. Buenas, Me gustaría saber como podría insertar código html (concretamente una fila con un link) mediante jQuery y que javascript lo reconozca como un elemento ...
  #1 (permalink)  
Antiguo 26/03/2012, 08:23
 
Fecha de Ingreso: octubre-2008
Mensajes: 23
Antigüedad: 16 años, 2 meses
Puntos: 2
Insertar codigo dinámico con jQuery

Buenas,

Me gustaría saber como podría insertar código html (concretamente una fila con un link) mediante jQuery y que javascript lo reconozca como un elemento mas.

Me explico con un ejemplo.

Yo tengo la siguiente tabla:
Código HTML:
<table>
	<tbody>
		<tr><td>elem1</td><td>elem2</td></tr>
		<tr><td>elem1</td><td>elem2</td></tr>
		<tr><td colspan="2"><a href="" class="foo">FOO</a></td></tr>
	</tbody>
</table> 
Como se puede ver, la última fila de ésta es un link en la clase "foo".

Ahora tengo este codigo jQuery:
Código:
$().ready(function() {
	$('.foo').click(function() {
		row = $(this).parent().parent().parent().children('tr:last');
		$(this).parent().parent().parent().append(row);
	});
});
Lo que hace el código es copiar la ultima fila e insertarla al final del tbody. El problema es que javascript no detecta que es codigo html (supongo que lo interpretará como un string normal).

Como puedo hacer para que la fila insertada sea dinámica con javascript (es decir, que responda al evento de click?)

Gracias!
  #2 (permalink)  
Antiguo 26/03/2012, 09:04
Avatar de Shirak2  
Fecha de Ingreso: abril-2008
Ubicación: Granada
Mensajes: 42
Antigüedad: 16 años, 7 meses
Puntos: 19
Respuesta: Insertar codigo dinámico con jQuery

Si la fila la insertas bien en HTML, el problema está en que la función .click() de jQuery es un .bind() simplificado, por lo que sólo funciona con los elementos que había al cargar la página.
Para poder hacer lo que necesitas, tienes que hacer una delegación en el elemento padre usando .delegate().
Si tienes jQuery 1.7 o más alto, puedes usar .on(), que dependiendo de la manera en que lo llames es un bind o un delegate.

Ejemplo:
Código Javascript:
Ver original
  1. $('tbody').on('click', '.foo', function() {
  2.     // código
  3. });

Etiquetas: dinamic, js
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:00.