2010-10-18 2 views
1

Je suis en train de définir une largeur dynamique ul.sections en vérifiant combien existe li's et multiplier par la largeur de la li ($("ul.sections").width()), qui dans ce cas arrive à être 910px.jQuery calculer le nombre d'éléments de liste, puis multiplier par le nombre et défini comme la largeur

Je ne suis pas sûr comment retourner le nombre actuel d'éléments de liste visibles. Peut-être quelque chose comme ça?

$('ul.sections').width($("ul.sections li").length() * $("ul.sections li").width()); 

Ce qui évidemment ne fonctionne pas encore. Des idées?

Répondre

1

.length est une propriété non une méthode, il suffit d'utiliser $("ul.sections li").length comme ceci:

$('ul.sections').width($("ul.sections li").length * $("ul.sections").width()); 

Si vous avez plusieurs sections, ce serait la version jQuery 1.4+:

$('ul.sections').width(function(i, w) { return $(this).find('li').length * w; }); 
+0

Merci, cela était exact. J'aurais dû laisser le '()'. Je pensais que j'étais loin avec le reste, mais j'étais assez proche! Enfin, j'ai eu le coup de jQuery yessss légèrement intermédiaire :) – steve

1

il y a un :visible jQuery Selector

pour obtenir tout visible <li> dans ul.sections

$("ul.sections li:visible") 

maintenant vous pouvez définir votre largeur

$("ul.sections").width($("ul.sections li:visible").length * $("ul.sections").width())); 
+0

J'ai oublié d'ajouter le: sélecteur visible avant, merci de me le rappeler. – steve

Questions connexes