Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Sumar los anchos de los <li> dentro de un <ul>

Estas en el tema de Sumar los anchos de los <li> dentro de un <ul> en el foro de Frameworks JS en Foros del Web. Hola gente, tengo un código mediante el cual sumo todos los anchos de los <li> de una lista, y el resultado es el ancho del ...
  #1 (permalink)  
Antiguo 30/07/2012, 10:28
Avatar de rogertm
Mod->Cuba
 
Fecha de Ingreso: julio-2005
Ubicación: /home/Cuba/Habana/rogertm/
Mensajes: 2.922
Antigüedad: 18 años, 8 meses
Puntos: 638
Sumar los anchos de los <li> dentro de un <ul>

Hola gente, tengo un código mediante el cual sumo todos los anchos de los <li> de una lista, y el resultado es el ancho del <ul> que los contiene a todos, pero pasa que el último elemento no lo suma y hay que añadirlo a mano, pero el resultado final no es el que se espera, sino más ancho.

Código Javascript:
Ver original
  1. $(function(){
  2.     var $tabs = $('#idx-tabs ul');
  3.    
  4.     /* Scrollable ribbon */
  5.     var ribbon_width = 0;
  6.     var scroll = $("#idx-tabs .scroll");
  7.     var left_scroll = $("#idx-tabs .scroll.left");
  8.     var right_scroll = $("#idx-tabs .scroll.right");
  9.  
  10.     $("li", $tabs).map(function(i) { // calculate real ribbon width
  11.         margin = parseInt($(this).css("margin-right"));
  12.         margin += parseInt($(this).css("margin-left"));
  13.         margin += parseInt($(this).css("padding-right"));
  14.         margin += parseInt($(this).css("padding-left"));
  15.         ribbon_width = ribbon_width + $(this).width() + margin;
  16.     });
  17.     // aquí es donde hay que sumarle la última li
  18.     ribbon_width += ($("li:last", $tabs).width());
  19.    
  20.     var scrolling; // for intervals
  21.     var scroll_step = 25;
  22.     var scroll_speed = 100; // ms
  23.     $tabs.width(ribbon_width);
En fin, lo ideal es que sume todo sin necesidad de sumar el último aparte.

Cualquier ayuda será bienvenida. Gracias.
__________________
Friki y Blogger por Cuenta Propia:213
Twenty'em: Theming is Prose
  #2 (permalink)  
Antiguo 30/07/2012, 12:22
Avatar de Lynxcraft  
Fecha de Ingreso: noviembre-2007
Ubicación: yecla murcia
Mensajes: 1.346
Antigüedad: 16 años, 5 meses
Puntos: 51
Respuesta: Sumar los anchos de los <li> dentro de un <ul>

Código PHP:
var 0;
 $(
"li"$tabs).each(function() { 
        
w+=$(this).outerWidth(true);
});
$tabs.width(w); 
__________________
Sobran las ideas cuando faltan ganas de trabajar en ellas
Lynxcraft
  #3 (permalink)  
Antiguo 31/07/2012, 09:22
Avatar de rogertm
Mod->Cuba
 
Fecha de Ingreso: julio-2005
Ubicación: /home/Cuba/Habana/rogertm/
Mensajes: 2.922
Antigüedad: 18 años, 8 meses
Puntos: 638
Respuesta: Sumar los anchos de los <li> dentro de un <ul>

Gracias hermano, ha funcionado, he tenido que meterle algo de coco por mi falta de conocimiento en el tema, pero ya está funcionando ok, ahora me falta hacer mucho testeo con contenidos diferentes a ver si no hay ninguna otra cosa por hacer. Por ahora el código ha quedado así:
Código Javascript:
Ver original
  1. $(function(){
  2.     var $tabs = $('#idx-tabs ul');
  3.    
  4.     /* Scrollable ribbon */
  5.     var w = 0;
  6.     var scroll = $("#idx-tabs .scroll");
  7.     var left_scroll = $("#idx-tabs .scroll.left");
  8.     var right_scroll = $("#idx-tabs .scroll.right");
  9.  
  10.     $("li", $tabs). each(function(){
  11.         margin = parseInt($(this).css("margin-right"));
  12.         margin += parseInt($(this).css("margin-left"));
  13.         margin += parseInt($(this).css("padding-right"));
  14.         margin += parseInt($(this).css("padding-left"));
  15.         w += $(this).outerWidth(true) + margin;
  16.         }
  17.     );
  18.    
  19.     var scrolling; // for intervals
  20.     var scroll_step = 25;
  21.     var scroll_speed = 100; // ms
  22.     $tabs.width(w);
  23. ...

Gracias por la ayuda...
__________________
Friki y Blogger por Cuenta Propia:213
Twenty'em: Theming is Prose
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:15.