Foros del Web » Programando para Internet » Jquery »

Colaboracion con Jquery

Estas en el tema de Colaboracion con Jquery en el foro de Jquery en Foros del Web. Tengo el siguiente codigo para capturar el evento click de una celda en una tabla con jquery: $("#fields :tr > td").click(function(){ str = '<tr><td>' + ...
  #1 (permalink)  
Antiguo 24/09/2009, 13:57
 
Fecha de Ingreso: mayo-2008
Mensajes: 8
Antigüedad: 15 años, 11 meses
Puntos: 0
Colaboracion con Jquery

Tengo el siguiente codigo para capturar el evento click de una celda en una tabla con jquery:

$("#fields :tr > td").click(function(){
str = '<tr><td>' + $(this).text() + '</td>'+
'<td><select id="oper" name="oper">'+
'<OPTION VALUE="--">--</OPTION>'+
'<OPTION VALUE="equal">=</OPTION>'+
'<OPTION VALUE="like">LIKE</OPTION>'+
'<OPTION VALUE="lt"><</OPTION>'+
'<OPTION VALUE="gt">></OPTION>'+
'<OPTION VALUE="diferent">!=</OPTION>'+
'</SELECT> </td>'+
'<td><input id="'+ $(this).text() +'" name="'+ $(this).text() +'" type="text" ></td>'+
'<td>ICON-REMOVE</td>'+
'</tr>';
alert($(this).text());
//$('#filter tr:last').after();
$("#filters > table").append(str);
//alert($(this).text());
});

el cual funciona correctamente cuando las filas de la tabla son generadas al cargar la tabla. El problema surge al realizar un filtro sobre los elementos que me cambia el numero de filas de la tabla segun el texto que vaya ingresando en un input text ( el codigo para esto es el siguiente):

$("#search_input").keyup(function(){
var patt = new RegExp(String($("#search_input").attr("value")),'i ');
//str_out = '<table id="fields">';
str_out = '';
for(i=0; i < fields_list.length; i++)
{
if (patt.test(fields_list[i][0]))
{
//alert($("#search_input").attr("value"));
str_out = str_out + '<tr><td onClick="click_td();">' + fields_list[i][0] + '</td></tr>';
}
}
//str_out = str_out + '</table>';

$("#Contenedor > #fields").html(str_out);
});

una vez los elementos de la tabla cambian por el filtro el ya no me es posible capturar el evento click sobre las filas de la tabla, cabe aclarar que no se genera ningun error en la consola de errores de firebug.

Agradezco de antemano la ayuda que me puedan brindar.
  #2 (permalink)  
Antiguo 24/09/2009, 14:11
Avatar de eall  
Fecha de Ingreso: noviembre-2008
Ubicación: Concepcion
Mensajes: 127
Antigüedad: 15 años, 5 meses
Puntos: 8
Respuesta: Colaboracion con Jquery

me parece que cuando se crean tags HTML mediante ajax, jquery no las reconoce a no ser que sea añadido nuevamente el codigo que controla los clicks en los elementos agregados.
intenta agregar el codigo $("#fields :tr > td").click(function(){}); en cada ocacion que tu tabla sea generada dinamicamente.
__________________
tutoriales xajax, jQuery, PHP y otros en mi blog
  #3 (permalink)  
Antiguo 25/09/2009, 12:07
Avatar de SergeMedina  
Fecha de Ingreso: septiembre-2007
Ubicación: Guadalajara, Jalisco
Mensajes: 459
Antigüedad: 16 años, 7 meses
Puntos: 20
Respuesta: Colaboracion con Jquery

Mejor utiliza la funcion live de jquery

Código javascript:
Ver original
  1. $(#fields :tr > td).live('click', myCallback);
live asigna eventos a elementos que existen en el DOM y elementos que no existen.
__________________
I see dead pixels
  #4 (permalink)  
Antiguo 01/10/2009, 10:54
 
Fecha de Ingreso: mayo-2008
Mensajes: 8
Antigüedad: 15 años, 11 meses
Puntos: 0
Respuesta: Colaboracion con Jquery

Cita:
Iniciado por SergeMedina Ver Mensaje
Mejor utiliza la funcion live de jquery

Código javascript:
Ver original
  1. $(#fields :tr > td).live('click', myCallback);
live asigna eventos a elementos que existen en el DOM y elementos que no existen.
Hola.

Gracias por la ayuda lamentablemente y gracias a las maravillas de IE8 no pude usarlo, ya que funciona muy bien en Firefox pero en la peste esa de microsoft no anda ni a empujones.

De todas formas gracias por el dato.
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 14:18.