我尝试在此代码中包装文本
<div class="div">
<span></span>
<a></a>
*text I want to wrap*
<span></span>
</div>
我知道文字是什么,但我不知道他在div中的位置是什么
$(".div:contains('*text*')")
我得到了正确的div,但我无法弄清楚如何包装我的文本
答案 0 :(得分:1)
假设您想要包装所有文本(当然我可能错了),我建议:
$('.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>');
});
答案 1 :(得分:1)
最简单的方法是获取父元素的html并用新字符串
替换字符串newHtml = $(".div").html().replace("*text I want to wrap*","<b>new html</b>");
现在将新的Html放回到父div
$(".div").html(newHtml);