首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery选择并包装textNode

jQuery选择并包装textNode
EN

Stack Overflow用户
提问于 2011-03-14 03:14:26
回答 3查看 9.2K关注 0票数 15

我想选择div元素中的文本,并用<b>标记对其进行包装。<b>标记应该只换行到div中的文本,而不是子元素中的文本,比如本例中的<p>标记。

代码语言:javascript
复制
<div>Testing
    <p>Some more text inside p</p>
    <p>asdasdasdasdasde p</p>
    Test
</div>

我可以使用以下命令选择<p>文本,但不能对div执行同样的操作。我只想要div的文本,而不是p。对于这种情况,它应该选择并包装TestingTest

代码语言:javascript
复制
var x = $('p')[0].textContent; // this is not working for div.
console.log(x);

JSFiddle

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-03-14 03:28:40

您可以使用contents,并按节点类型过滤(3表示文本节点):

代码语言:javascript
复制
$('div').contents()
        .filter(function(){return this.nodeType === 3})
        .wrap('<b />');

示例:http://jsfiddle.net/nJqKq/8

另请参阅:Node Types,在MDC

票数 44
EN

Stack Overflow用户

发布于 2011-03-14 03:50:23

通过纯JS和DOM:

HTML:

代码语言:javascript
复制
<div id="test">Testing
    <p>Some more text inside p</p>
    <p>asdasdasdasdasde p</p>
    Test
</div>

JS:

代码语言:javascript
复制
getTextNodes(document.getElementById("test"));

function getTextNodes(parent)
{
    var textNodes = [];
    var nodes = parent.childNodes;
    for(var i=0;i<nodes.length;i++)
    {
        if(nodes[i].nodeType === 3)
        {   
            textNodes.push(nodes[i]);
            wrapBold(nodes[i], parent);
        }
    }
}

function wrapBold(node, parent)
{
    //check for whitespace text nodes
    if(node.data.match(/[^\t\n\r ]/))
    {
        var bold = document.createElement("strong");
        parent.insertBefore(bold, node);
        bold.appendChild(node);
    }else
    {
        return false;   
    }
}

http://jsfiddle.net/dnjsY/5/

票数 7
EN

Stack Overflow用户

发布于 2014-07-31 03:37:56

如果您不想包装空节点,请使用以下命令:

代码语言:javascript
复制
$('div').contents()
        .filter(function(){ 
            return this.nodeType === 3  && this.data.trim().length > 0
         }).wrap('<b />');
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5291703

复制
相关文章

相似问题

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