Foros del Web » Programando para Internet » Jquery »

selección de renglones con jquery

Estas en el tema de selección de renglones con jquery en el foro de Jquery en Foros del Web. Buenas noches, estoy intentando hacer lo siguiente, tengo una tabla con registros la cual se carga con ajax. En esta se muestran 10 registros. En ...
  #1 (permalink)  
Antiguo 16/07/2015, 23:48
 
Fecha de Ingreso: febrero-2014
Ubicación: Hermosillo, Sonora
Mensajes: 86
Antigüedad: 10 años, 2 meses
Puntos: 0
selección de renglones con jquery

Buenas noches, estoy intentando hacer lo siguiente, tengo una tabla con registros la cual se carga con ajax. En esta se muestran 10 registros. En cada renglón hay una columna donde va un checkbox y en las otras columnas van los demás datos. Lo que se pretende hacer es que cuando se de click en el checkbox, su respectivo renglón cambie de color indicando que esta seleccionado. Para esto agregue un css cuando se diera click al checkbox para que el renglón cambiara de color lo cual si funciono.

El problema que estoy teniendo es que no solo se desea, que al hacer click al checkbox el renglón se ponga de color, si no que si se llega a hacer click en el renglón igual este se debe poner de color. Si se da click en el renglón o en el checkbox. El renglon tiene que ponerse de color y cuando el renglón ya este seleccionado. Si se da click a cualquiera de las dos opciones se debe de quitar la selección. Si alguien tiene alguna idea. Ya que solo a estado funcionando con el checkbox ya que la selección del renglón esta causando problemas ya que choca con el checkbox
  #2 (permalink)  
Antiguo 17/07/2015, 11:17
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: selección de renglones con jquery

Tienes que ejecutar una función cuando se produzca el evento click en cualquiera de los elementos contenidos en cada fila. En dicha función, tomas a la fila que contiene al elemento clickeado y le puedes asignar una clase CSS para asignarle un color de fondo; esto funcionaría con una condición, en la cual verificaría que dicha fila posea o no la clase en cuestión; por lo que si está presente, le quitas la clase, caso contrario, se la asignas.

Código Javascript:
Ver original
  1. $("tr *").on("click", function(event){
  2.     var fila = $(this).parents("tr");
  3.    
  4.     event.stopImmediatePropagation();
  5.    
  6.     if (fila.hasClass("resaltar")){
  7.         fila.removeClass("resaltar");
  8.     }
  9.     else{
  10.         fila.addClass("resaltar");
  11.     }
  12. });

Con el método .parents(), pasándole como parámetro la cadena tr, tomo de todos los elementos ancestros del elemento afectado por el evento click, al que sea un <tr>, luego, prevengo el bubbling utilizando el método .stopImmediatePropagation() para que se afecte solo al elemento clickeado y no a otros en el DOM y, utilizando el método .hasClass(), verifico que la fila posea la clase que utilizo para asignarle un color de fondo, que en este ejemplo se llama resaltar. Si la tiene, se la quito con el método .removeClass(), caso contrario, se la asigno con el método .addClass().

DEMO

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #3 (permalink)  
Antiguo 17/07/2015, 13:51
 
Fecha de Ingreso: febrero-2014
Ubicación: Hermosillo, Sonora
Mensajes: 86
Antigüedad: 10 años, 2 meses
Puntos: 0
Respuesta: selección de renglones con jquery

Gracias, ya lo probé, solo que aquí esta haciendo lo que no quiero. Cuando seleccionas el checkbox debe de ponerse de color el renglón. Así como cuando seleccionas el renglón este se debe de poner de color, pero debe de seleccionar el checkbox También. Así como cuando se quita la selección del checkbox se debe de quitar el color del renglón.
  #4 (permalink)  
Antiguo 17/07/2015, 15:41
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: selección de renglones con jquery

Verifica si el checkbox está marcado mediante la propiedad checked.

Código Javascript:
Ver original
  1. //Si el elemento clickeado no es un checkbox
  2. if (!$(this).is(":checkbox")){
  3.     //Buscamos en la fila al checkbox y verificamos si está marcado
  4.     if (fila.find(":checkbox").prop("checked")){
  5.         fila.find(":checkbox").prop("checked", false);
  6.     }
  7.     else{
  8.         fila.find(":checkbox").prop("checked", true);
  9.     }  
  10. }

NOTA: Este bloque de código debe de ir adherido al anterior, no en su reemplazo.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Última edición por Alexis88; 17/07/2015 a las 15:52 Razón: Nota
  #5 (permalink)  
Antiguo 17/07/2015, 17:11
 
Fecha de Ingreso: febrero-2014
Ubicación: Hermosillo, Sonora
Mensajes: 86
Antigüedad: 10 años, 2 meses
Puntos: 0
Respuesta: selección de renglones con jquery

Lo del checkbox si quedo, nomas que estuve viendo lo del parents y lo que esta haciendo es poner de color los renglones pares. Es decir si doy click a un renglón y luego a otro solo colorea el segundo.
  #6 (permalink)  
Antiguo 17/07/2015, 17:46
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: selección de renglones con jquery

Si no muestras lo que tienes hecho, no podremos ayudarte. No podemos adivinar.

No olvides usar el highlight respectivo.

__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Etiquetas: Ninguno
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 10:16.