Foros del Web » Programando para Internet » Javascript »

Paginacion de divs con Javascript

Estas en el tema de Paginacion de divs con Javascript en el foro de Javascript en Foros del Web. Se que este tema se ha tocado pero no encuentro algo interesante para poder hacer lo que quiero... ningun plugin satisface mis necesidades, asi que ...
  #1 (permalink)  
Antiguo 11/10/2012, 11:59
 
Fecha de Ingreso: mayo-2011
Mensajes: 105
Antigüedad: 13 años
Puntos: 3
Pregunta Paginacion de divs con Javascript

Se que este tema se ha tocado pero no encuentro algo interesante para poder hacer lo que quiero... ningun plugin satisface mis necesidades, asi que les comento:

Quiero hacer un catalogo de productos, en donde cada producto puede estar destacado o no. Cuando un producto es destacado lo vamos a llamar producto estrella.

Si un producto es estrella tendra unas dimensiones alto y ancho superiores a un producto que no es estrella.

Estos productos se van a mostrar en un contenedor de ancho y alto fijos...

Lo que yo necesito es paginar el catalog....

Lo que tengo hasta el momento es:

1. consulto los productos de un negocio y los obtengo en formato json.

2. con un switch defino si se pinta como producto estrella o no.

3. Los productos se pintan sobre una capa id parrilladeproductos+j, donde j es el numero actual de la pagina.

4. Cuando parrilladeproductos+j llega al limite del alto de su contenedor padre, se pagina.


Pero el problema esta en el punto 4, que no termina de pintar el producto a lo ancho y me queda un vacio inmenso....

Graficamente:



El codigo que tengo hasta ahora es el siguiente:

Código Javascript:
Ver original
  1. function PaginarListaProductos(objson,grandparent){
  2.     $('#'+grandparent).css({height:'22em'});
  3.     //arreglo global de paginas
  4.     var cantidadpaginas = Array();
  5.     var numproducto = 0;
  6.     //se valida el tamaño del contenedor padre, si llego al 100% del ancho de la capa abuelo se pagina
  7.     for(j = 0; j < objson[0].productos.length;j++){
  8.         Nuevodiv('parrillaproductos'+j,'parrproductos','',grandparent);
  9.         $('#parrillaproductos'+j).css('overflow','hidden');
  10.         cantidadpaginas[j] = 'parrillaproductos'+j;
  11.         var productosrestantes = objson[0].productos.length - numproducto;
  12.         for(i = numproducto;i < objson[0].productos.length; i++){
  13.             PintarProductoGold(objson[0].productos[i].producto.idproducto,objson[0].productos[i].producto.nombre,objson[0].productos[i].producto.valor,objson[0].productos[i].producto.estrella,objson[0].productos[i].producto.imagen,'parrillaproductos'+j);
  14.             productosrestantes--;
  15.             //aqui valido el alto de la parrilla y el contenido principal
  16.             if($('#'+grandparent).height() < $('#parrillaproductos'+j).height()+166){
  17.                 numnegocio = i+1;
  18.                 break;         
  19.             }              
  20.         }
  21.         if(productosrestantes == 0){
  22.             break;
  23.         }
  24.     }
  25.  
  26. //aqui empieza la paginacion....
  27.  
  28.     if(cantidadpaginas.length > 1){
  29.         for(var k = 0; k < cantidadpaginas.length;k++){
  30.             if(k == 0){
  31.                
  32.                 $('#'+cantidadpaginas[0]).css('display','block');
  33.                 Nuevodivp('adelante','largetitle',"<img src='http://www.yellowcg.com/images/icons/adelante.png' onclick=\"$('#"+cantidadpaginas[1]+"').css('display','block');$('#"+cantidadpaginas[0]+"').css('display','none');\" height='22' style='cursor:pointer'/>",cantidadpaginas[0]);
  34.                
  35.             }
  36.             else if(k == cantidadpaginas.length - 1 ){
  37.                 $('#'+cantidadpaginas[k]).css('display','none');
  38.                 Nuevodivp('adelante','largetitle',"<img src='http://www.yellowcg.com/images/icons/atras.png' onclick=\"$('#"+cantidadpaginas[k-1]+"').css('display','block');$('#"+cantidadpaginas[k]+"').css('display','none');\" height='22' style='cursor:pointer'/>",cantidadpaginas[k]);
  39.             }
  40.             else{
  41.                 $('#'+cantidadpaginas[k]).css('display','none');
  42.                 Nuevodivp('atrasadelante','largetitle',"<img src='http://www.yellowcg.com/images/icons/atras.png' onclick=\"$('#"+cantidadpaginas[k-1]+"').css('display','block');$('#"+cantidadpaginas[k]+"').css('display','none');\" height='22' style='cursor:pointer'/><img src='http://www.yellowcg.com/images/icons/adelante.png' onclick=\"$('#"+cantidadpaginas[k+1]+"').css('display','block');$('#"+cantidadpaginas[k]+"').css('display','none');\" height='22' style='cursor:pointer'/>",cantidadpaginas[k]);
  43.             }
  44.         }
  45.     }
  46. }

Con lo que tengo no me funciona porque al pintar el primer di de la ultima fila, se pagina de inmediato....

Asi:



Se me ocurre algo con el top, left... pero no estoy seguro de como hacerlo

me echais una mano por favor?

Etiquetas: diseño_paginado, diseño_web, jquery, metroui, paginacion-en-javascript, paginacion_jquery, paginar, paginar_resultados
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 00:17.