Ver Mensaje Individual
  #1 (permalink)  
Antiguo 11/10/2012, 11:59
deywibkiss
 
Fecha de Ingreso: mayo-2011
Mensajes: 105
Antigüedad: 13 años, 11 meses
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?