2016-04-10 5 views
0

Ich habe ein p tag und ich möchte ein Wort wickeln in einem a tagWie ich ein Wort aus ap in einem Tag wickeln kann

Lorem ipsum @dolor sit amet, consectetur zu
Lorem ipsum @dolor sitzen amet, consectetur

ich habe dies versucht:

objectP = document.getElementsByTagName('p'); 
$.each(objectP, function(i, val){ 

    arrayWords = val.innerHTML.split(" ") 

    $.each(arrayWords, function(i, val){ 

     if(val[0] === '@'){ 

      val.wrap("<a></a>") 

     } 

    }) 

}) 
+0

Sie wollen alle Wörter wickeln, die mit 'beginnt @' in '' Tag? Was sollte für das ersetzte Ankerelement "href" sein? – Tushar

Antwort

0

können Sie Regex verwenden, um mit Gruppe erfassen die Dinge einfacher zu machen

objectP = document.getElementsByTagName('p'); 

$.each(objectP, function(i, val){ 
    val.innerHTML = val.innerHTML.replace(/(@.*?)\s/g, "<a href='#'>$1</a>"); 
}) 

Hier (@.*?) ist die Erfassungsgruppe und $1 wird das aufgenommene Zeichenfolge aus dem gesamten angepassten String haben.

+0

Diese Lösung funktioniert nicht für Strings wie '@ dolor's' oder' @ dolor-3' –

+0

@RohitAgre danke für das Zeigen. Ich habe meine Regex aktualisiert –

+1

Oh mein Gott, es ist Arbeit! Danke vielmals! –

0

Da Sie verwenden sowieso jQuery diese versuchen

$("p").each(function(){ 
    $(this).replaceWith($(this).html().replace(/(@[^\s]+)/,"<a href='#'>$1</a>")) 
}) 
0

guten alten fashioned Looping:

var paragraphs = document.querySelectorAll('p'); 

    [].map.call(paragraphs, function(p) { 
    var htmlArray = p.innerHTML.split(' '); 

    htmlArray.map(function(word, i, arr) { 
     if(word === '@dolor') { 
     var a = '<a href="#">' + word + '</a>'; 
     arr[i] = a; 
     } 
    }); 

    p.innerHTML = htmlArray.join(' '); 
    }); 
Verwandte Themen