2009-10-12 6 views
0

J'ai une chaîne contenant du texte et quelques balises <a>; Je veux savoir comment je peux sélectionner une étiquette de la variable et la boucler. J'ai essayé ce qui suit, mais cela n'a pas fonctionné:Sélection d'une étiquette avec un sélecteur à partir d'une variable de texte à l'aide de jQuery

var text = `some string here with <a href="#link">http:something.com</a> more string and more links also`; 

$('a', text).each(function() { 

      var string = $(this).html(); 
      $(this).html(string.substring(0, length-1)+(string.length > length ? end : '')); 

     }); 

Répondre

5

Vous devez envelopper le texte dans un div (ou un autre élément), puis il find():

var text = 'some string here with <a href="#link">http:something.com</a> more string and more links also'; 

text = $('<div>' + text + '</div>'); 

text.find('a').each(function() { 
    var length = 10; 
    var end = '...'; 

    var string = $(this).html(); 
    $(this).html(string.substring(0, length) + (string.length > length ? end : '')); 
}); 

var text = text.html(); 

// Put it into a textarea 
$('#myTextarea').val(text); 
+0

greg merci de répondre et de son fonctionnement, mais un seul problème à gauche est .. comment puis-je changer le texte init et l'assigner à la même position qu'avant? – Basit

+0

Le code que vous avez fonctionne à peu près si vous définissez la longueur et la fin. Vous avez juste besoin de saisir 'text.html()' après l'avoir exécuté. – Greg

+0

non, text.html() ne fonctionne pas, mes boucles de lignes se terminent quand je lance text.html(), il ne fonctionnera plus javascript après et ne montrera aucune erreur dans firebug. – Basit

0

Remplacer

$('a', text).each(function() { 

avec

$(text, 'a').each(function() { 

et voir si cela fonctionne.

+0

votre sélection a également, mais il a donné problème sur $ (this) .html (« l'ajout d'une nouvelle valeur ») btw savez-vous comment je peux mettre même valeur dans la variable de texte après l'avoir changé? – Basit

Questions connexes