J'ai étudié plus précisément ton code. En fait ton code Javascript semble tout à fait correct, pour la fonctionnalité que tu souhaites obtenir.
A première vue je l'avais trouvé relativement long et complexe car comme je te l'ais expliqué dans les premiers poste, le système que je t'avais proposé ne redimensionnait pas les <li> dynamiquement.
Le script devait simplement récupérer la somme de la largeur de tous tes <li> et injecter (via Jquery) a la suite une balise dont la largeur est calculée dynamiquement comme ceci : (largeur maximum en px que ton menu peut avoir) moins (somme de tous tes <li>).
Par contre cette technique ne permet pas de dispatcher tes <li> sur toute la largeur comme tu le fais actuellement.
Ta technique est sympa visuellement mais peut générer des problèmes d'affichage si tu rajoutes trop d'éléments de menu. Tu risque d'avoir des mots coupés si la largeur de ton <li> devient inférieure à la largeur de ton texte. Et plus tes mots seront longs plus tu aura de chances que des lettres soient invisibles...
Le choix technique dépend donc du nombre d'éléments que tu risques d'avoir à long terme.
Un équivalent de ton script en un peu plus court :
http://plugins.jquery.com/project/fluwi
Si jamais tu souhaites passé sur la technique que je te conseille voici un exemple de logique et un lien pour la réaliser :
var somme=0;
$('.navigation li').each( function(){ somme += $(this).width(); });
...
// Ici tu calcule la taille de ton espace vide (970px - somme)
...
$('mondivDeRemplissage').width( resultat );
...
// Ici tu injectes ton div
...
Pour injecter une balise une fois la dimension de celle ci calculée :
http://api.jquery.com/appendTo
A+
Modifié par Spacedementia (05 Aug 2011 - 22:18)