我尝试在下面的代码中包装一个文本
<div class="div">
<span></span>
<a></a>
*text I want to wrap*
<span></span>
</div>我知道文本是什么,但我不知道他在div中的位置
$(".div:contains('*text*')")我得到了正确的div,但是我不知道如何对文本进行换行
发布于 2012-08-27 15:34:50
最简单的方法是获取父元素的html,并用新字符串替换该字符串
newHtml = $(".div").html().replace("*text I want to wrap*","<b>new html</b>");现在,将新的Html放回父目录
$(".div").html(newHtml);Example fiddle
发布于 2012-08-27 15:27:42
假设您想对所有文本进行换行(当然,我可能是错的),我建议:
$('.div').contents().each(
function(){
if (this.nodeType == 3) {
$(this).wrap($('<a />', {'href':'#'}));
}
});JS Fiddle demo。
如果只想对特定文本进行换行:
$('.div').contents().each(
function(){
if (this.nodeType == 3 && this.nodeValue.trim() == "*text I want to wrap*" ) {
$(this).wrap($('<a />', {'href':'#'}));
}
});JS Fiddle demo。
考虑到您更喜欢将HTML视为字符串的简单方法,我想我会发布一个比您接受的答案更简单的答案:
$('.div').html(
function(i,h){
return h.replace('*text I want to wrap*','<b>$&</b>');
});JS Fiddle demo。
https://stackoverflow.com/questions/12137679
复制相似问题