首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >包装nodeValue

包装nodeValue
EN

Stack Overflow用户
提问于 2012-08-27 15:15:31
回答 2查看 182关注 0票数 1

我尝试在下面的代码中包装一个文本

代码语言:javascript
复制
<div class="div">
    <span></span>
    <a></a>
    *text I want to wrap*
    <span></span>
</div>

我知道文本是什么,但我不知道他在div中的位置

代码语言:javascript
复制
$(".div:contains('*text*')")

我得到了正确的div,但是我不知道如何对文本进行换行

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-08-27 15:34:50

最简单的方法是获取父元素的html,并用新字符串替换该字符串

代码语言:javascript
复制
newHtml = $(".div").html().replace("*text I want to wrap*","<b>new html</b>");

现在,将新的Html放回父目录

代码语言:javascript
复制
 $(".div").html(newHtml);

Example fiddle

票数 1
EN

Stack Overflow用户

发布于 2012-08-27 15:27:42

假设您想对所有文本进行换行(当然,我可能是错的),我建议:

代码语言:javascript
复制
$('.div').contents().each(
    function(){
        if (this.nodeType == 3) {
            $(this).wrap($('<a />', {'href':'#'}));
        }
    });​

JS Fiddle demo

如果只想对特定文本进行换行:

代码语言:javascript
复制
$('.div').contents().each(
    function(){
        if (this.nodeType == 3 && this.nodeValue.trim() == "*text I want to wrap*" ) {
            $(this).wrap($('<a />', {'href':'#'}));
        }
    });​

JS Fiddle demo

考虑到您更喜欢将HTML视为字符串的简单方法,我想我会发布一个比您接受的答案更简单的答案:

代码语言:javascript
复制
$('.div').html(
    function(i,h){
        return h.replace('*text I want to wrap*','<b>$&</b>');
    });​

JS Fiddle demo

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12137679

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档