我尝试在这段代码中换行
<div class="div">
<span></span>
<a></a>
*text I want to wrap*
<span></span>
</div>
我知道文本是什么,但我不知道他在 div 中的位置是什么
$(".div:contains('*text*')")
我得到了这样的正确 div,但我不知道如何包装我的文本
我尝试在这段代码中换行
<div class="div">
<span></span>
<a></a>
*text I want to wrap*
<span></span>
</div>
我知道文本是什么,但我不知道他在 div 中的位置是什么
$(".div:contains('*text*')")
我得到了这样的正确 div,但我不知道如何包装我的文本
假设您要包装所有文本(当然,我可能错了),我建议:
$('.div').contents().each(
function(){
if (this.nodeType == 3) {
$(this).wrap($('<a />', {'href':'#'}));
}
});
如果您只想包装特定文本:
$('.div').contents().each(
function(){
if (this.nodeType == 3 && this.nodeValue.trim() == "*text I want to wrap*" ) {
$(this).wrap($('<a />', {'href':'#'}));
}
});
鉴于您更喜欢将 HTML 视为字符串的简单方法,我想我会发布一个比您接受的更简单的答案:
$('.div').html(
function(i,h){
return h.replace('*text I want to wrap*','<b>$&</b>');
});
最简单的方法是获取父元素的 html 并用新字符串替换字符串
newHtml = $(".div").html().replace("*text I want to wrap*","<b>new html</b>");
现在将新的 Html 放回父 div
$(".div").html(newHtml);