2016-11-18 13 views

ответ

0

$('p:contains("#")').each(function() { 
 
    var tags = $(this).text().split(' '); 
 
    var wrapped_tags = ''; 
 

 
    tags.forEach(function(tag) { 
 
     wrapped_tags += '<span class="someClass">'+tag+'</span> '; 
 
    }); 
 

 
    $(this).html(wrapped_tags); 
 
});
.someClass { 
 
    color:red; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<p>#tag1 #tag2</p>

+0

Это также обертывают не являющихся «метки» (хотя и не ясно, в этом вопросе если есть только теги или смешанные) –

+0

@ freedomn-m yep, я предполагаю, что op означает, что существует много pharagraps, а некоторые из них имеют только теги внутри – Sojtin

+0

@ freedomn-m в любом случае ваш ответ лучше – Sojtin

2

Вы можете использовать .html() с обратным вызовом, который передает текущее значение и использовать регулярное выражение:

#\w+\b 

, что означает: сопрягать любое слово, которое начинается с #

$("p").html(function(index, html) { 
 
     return html.replace(/(\#\w+\b)/g, "<span>$1</span>") 
 
     }); 
 
     
span { color: orange }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<p>#tag1 #tag2</p> 
 
<p>Here's another #tag3</p>