Foros del Web » Programando para Internet » Jquery »

[SOLUCIONADO] Ordenar funcion each

Estas en el tema de Ordenar funcion each en el foro de Jquery en Foros del Web. Wenass Estoy intentando ordenar los resultados de una clase para realizar un each con jquery un ejemplo: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código HTML: Ver original < div ...
  #1 (permalink)  
Antiguo 04/06/2014, 14:29
Avatar de Maganius  
Fecha de Ingreso: septiembre-2010
Mensajes: 310
Antigüedad: 13 años, 6 meses
Puntos: 10
Ordenar funcion each

Wenass

Estoy intentando ordenar los resultados de una clase para realizar un each con jquery un ejemplo:

Código HTML:
Ver original
  1. <div class='Column_dias Dia_column_1'></div>
  2. <div class='Column_dias Dia_column_2'></div>
  3. <div class='Column_dias Dia_column_4'></div>
  4. <div class='Column_dias Dia_column_3'></div>

Quiero realizar un each de la clase Column_dias pero que me devuelva ordenado de esta forma:

Código HTML:
Ver original
  1. <div class='Column_dias Dia_column_1'></div>
  2. <div class='Column_dias Dia_column_2'></div>
  3. <div class='Column_dias Dia_column_3'></div>
  4. <div class='Column_dias Dia_column_4'></div>


Los divs los agrego dinamicamente con jquery.append por eso pueden salir desordenados al principio pero al ejecutar el each deben estar ordenados.

No se me ocurre como podria modificar ese orden.

El jquery:

Código Javascript:
Ver original
  1. $(".Column_dias").each(function(index){
  2.         var cualDia = $(this).attr("class").split(" ");
  3.               cualDia = cualDia[1].split("_");
  4.               cualDia = cualDia[2];
  5.               alert(cualDia);
  6. })
  #2 (permalink)  
Antiguo 04/06/2014, 15:54
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: Ordenar funcion each

Te sugiero insertar esos elementos <div> en un contenedor, de este modo, tomas a los elementos <div> del contenedor en cuestión, los asignas a un array, quitas el contenido del contenedor y con el método sort, realizas el ordenamiento según el número que aparece luego del último guión bajo en la segunda clase de cada elemento para finalmente insertar cada elemento del array ordenado en el contenedor.



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; 05/06/2014 a las 11:18 Razón: Fe de erratas
  #3 (permalink)  
Antiguo 05/06/2014, 07:36
Avatar de Maganius  
Fecha de Ingreso: septiembre-2010
Mensajes: 310
Antigüedad: 13 años, 6 meses
Puntos: 10
Respuesta: Ordenar funcion each

Hola Alexis88, gracias por responder y por el ejemplo.

No es algo viable eliminar los divs ya que cada DIV contiene información y posiciones absolutas muy importantes por lo que si eliminaría los div tendría que re-construir toda esa información.

Aun no se me ocurre como ordenar el DOM ya que es algo muy importante porque hago una comprobación de mayor y menor un ejemplo:

Código HTML:
Ver original
  1. <div class='Column_dias Dia_column_1'></div>
  2. <div class='Column_dias Dia_column_2'></div>
  3. <div class='Column_dias Dia_column_4'></div>
  4. <div class='Column_dias Dia_column_3'></div>

Código Javascript:
Ver original
  1. var Dia_seleccionado = 3;
  2. $(".Column_dias").each(function(){
  3.               var cualDia = $(this).attr("class").split(" ");
  4.               cualDia = cualDia[1].split("_");
  5.               cualDia = cualDia[2];
  6.  
  7.       if(Dia_seleccionado>cualDia){
  8.           $(this).animate("left","+=50");
  9.       }
  10. })

Lo que estoy intentando realizar es: mover todos los días a la derecha siempre y cuando sean mayor al día que seleccione previamente.

Problema:

Al generarse dinamicamente el último día el DOM queda de la forma anteriormente mostrado por lo que la comprobación dentro del each no la hace correctamente.
  #4 (permalink)  
Antiguo 05/06/2014, 09:54
Avatar de Maganius  
Fecha de Ingreso: septiembre-2010
Mensajes: 310
Antigüedad: 13 años, 6 meses
Puntos: 10
Respuesta: Ordenar funcion each

Ya logre ordenar el DOM de esta forma:

Código Javascript:
Ver original
  1. $("div[id^=Dia_column]").sort(function(a,b){                               
  2.  
  3.     if(a.id.replace('Dia_column', '') < b.id.replace('Dia_column', '')) {
  4.             return -1;
  5.     } else {
  6.             return 1;
  7.     }
  8. }).each(function(index){
  9.          console.log(this.id)
  10. })
  #5 (permalink)  
Antiguo 05/06/2014, 10:57
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: Ordenar funcion each

No sé si analizaste el código, pero antes de sacar los <div>, creo una copia de ellos y luego los ordeno para insertarlos en el contenedor, de modo que nunca pierdes la información que contenían los originales.

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

Etiquetas: funcion
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:21.