2012-06-21 1 views
2

J'utilise text-align: justify pour espacer uniformément les éléments du bloc inline. J'utilise jQuery pour échanger certains éléments afin qu'ils soient mieux ajustés (par exemple, remplir les lignes plus efficacement). Cependant, le navigateur ne justifie plus correctement les éléments échangés. Est-il possible de faire en sorte que le navigateur redéfinisse les éléments pour surmonter ce problème?Maintien de la justification des éléments de bloc inline justifiés après manipulation à l'aide de jQuery

modifier Voici un jsFiddle montrant la question: http://jsfiddle.net/sprintstar/HKDd9/3/

+0

s'il vous plaît jsFiddle votre code ou d'intégrer html et css que vous avez utilisé. – Subhajit

+0

Tenté de recréer votre problème ici http://jsfiddle.net/2kWSk/, mais les divs semblent garder leur alignement de texte après l'échange. Peut-être que dans votre cas, après avoir échangé des positions, ils ne correspondent plus aux propriétés CSS qu'ils utilisaient auparavant? Un lien vers un violon aiderait cependant à identifier le problème. – justis

+0

Ce http://jsfiddle.net/sprintstar/HKDd9/1/ devrait démontrer ce que j'essaie de faire (bien que je ne puisse pas réellement obtenir les éléments à échanger). – Sprintstar

Répondre

3

Le problème réside dans un espace manquant entre les éléments de bloc inline. Qu'est-ce que vous manquez est le nœud texte:

$(function() { 
    var eq3 = $('.container a:eq(3)'); 
    var eq4 = $('.container a:eq(4)'); 
    eq4.before(eq3).before(" "); 
});​ 

http://jsfiddle.net/archatas/HKDd9/4/

+0

Oui !!! Bien sûr, ils n'étaient pas séparés, et n'étaient donc pas justifiables. – Sprintstar

+0

Je ne vois pas cette solution fonctionner. @Sprintstar êtes-vous sûr? –

+0

voulez-vous dire: eq3.before (eq4) .avant (""); –

0

J'ai une solution possible mais je ne suis pas sûr de la raison pour laquelle votre code ne fonctionne pas comme prévu. Peut-être que quelqu'un pourrait faire la lumière sur la question.

Tout d'abord eq4.before(eq3); signifie que vous le replacez là où vous l'avez choisi. Je crois que vous vouliez dire eq4.insertBefore(eq3);

J'ai essayé d'ajouter un nouvel élément et il a parfaitement fonctionné

$('<a href="#" class="sq-1"><img src="http://placehold.it/64x32" /></a>').insertBefore(eq3); 

Edit: Mais le clonage du même élément ne produit pas le même résultat.

eq4.clone().insertBefore(eq3); 
eq4.remove(); 
+0

Vous avez raison, insertBefore est ce dont j'avais besoin, j'ai mis à jour le lien jsfiddle dans ma question, alors maintenant les éléments sont échangés, mais ne sont plus justifiés. – Sprintstar

+0

Votre ligne 'eq4.clone(). InsertBefore (eq3) .remove();' ne semble pas fonctionner? – Sprintstar

+0

bien sûr que non. Que je suis bête. –

Questions connexes