2011-10-28 5 views
1

J'ai, dans un div, quelques hyperliens. Le nombre d'hyperliens, cependant, varie. On ne sait pas ce que ce sera. Il peut être un, deux, N. Ce qui EST connu, c'est qu'il y a toujours au moins un lien hypertexte dans la div.Comment insérer des délimiteurs après chaque élément?

J'ai, en ce moment, les liens dans ce format:

Link1 Link2 Link3 

Je veux le convertir en:

Link1 | Link2 | Link3 

Je suis confronté à deux problèmes:

  1. Il est un tuyau après le dernier article - pas bon.
  2. Le tuyau, qui est inséré en tant que texte de lien hypertexte, et non entre les éléments.

Pour surmonter le premier problème, j'ai essayé d'insérer le tuyau seulement si l'élément n'est pas le dernier. pour le deuxième problème, je ne sais pas quoi faire .. voici ce que je fais jusqu'à présent:

http://jsfiddle.net/KL6Ua/

Aussi, je ne sais pas s'il y a une meilleure façon de résoudre le premier problème. Conseil s'il vous plaît.

Merci ,.

Répondre

4

Quelque chose comme http://jsfiddle.net/k8Fzk/?

$("<span>|</span>").insertAfter($('#divLinks a:not(:last)')); 

Modifier, si vous voulez simplement insérer un caractère de conduite après chaque élément, vous devez utiliser after-à-dire http://jsfiddle.net/W6RQH/:

$('#divLinks a:not(:last)').after('|'); 
+0

Bonjour @stecb, super ..merci, cependant, je ne comprends pas pourquoi délimiteur doit être une durée .. pouvez-vous s'il vous plaît expliquer? merci – LocustHorde

+0

coz dans ce cas, peut-être définir 'display: inline-block' à l'élément span, vous pouvez définir une marge personnalisée, couleur, etc :) – stecb

+0

@stecb, donc si je veux, puis-je toujours mettre un caractère pipe ? essayé cela et il ne voulait pas travailler! – iamserious

1
if(index != 0) 
     $(this).prepend(delimiter); 

OK Mise à jour ..

<div id="divLinks"> 
    <span><a href="">One</a></span> 
    <span><a href="">two</a></span> 
    <span><a href="">three</a></span> 
</div> 



$(function() { 

    var NumberOfLinks = $('#divLinks a').length; 

    $('#divLinks a').each(function(index) { 
     var delimiter = " | "; 

     if(index != 0) 
      $(this).parent().prepend(delimiter); 
    }); 
}); 
+0

Salut Steve, désolé, le tuyau apparaît toujours à l'intérieur du lien hypertexte et, par conséquent, il est encore un lien. ne pas résoudre mon deuxième (et principal) problème. – LocustHorde

+0

Voir ma mise à jour .. – Steve

+0

euh, désolé @steve, même sans essayer ce code, je peux dire qu'il est incorrect, comme chaque tuyau est ajouté à parent, tous les tuyaux sont dans un endroit et des liens dans l'autre .. voici ce que votre code est en train de faire: http://jsfiddle.net/7s633/2/ – LocustHorde

1

Vous avez une liste de liens , donc n'ayez pas peur d'utiliser des balises HTML appropriées pour les listes (ul li). Ensuite, n'utilisez pas Javascript pour la décoration des éléments - CSS est un meilleur outil.

http://jsfiddle.net/PcHSM/

+0

Salut, c'est une bonne idée, mais je n'ai pas de contrôle sur ce qui se passe dans la page, je dois travailler sur une page déjà présentée avec jquery pour mettre les choses en place .. merci. – LocustHorde

+0

Oh, d'accord. De toute façon, vous pouvez utiliser: avant aussi pour _a_ tags, _ul_ _li_ est simplement plus sémantique pour créer des listes. – artuska

Questions connexes