在div中包裹流浪文本

met*_*ion 3 jquery

如何选择"任何没有包含标签的东西"来在jQuery中添加包装器?例如:

<div class="post">
    <div class="whatever">This should remain untouched</div>
    I want to wrap this in div.red
</div>
Run Code Online (Sandbox Code Playgroud)

结果就是这样

<div class="post">
    <div class="whatever">This should remain untouched</div>
    <div class="red">I want to wrap this in div.red</div>
</div>
Run Code Online (Sandbox Code Playgroud)

Pie*_*rre 5

您正在尝试选择文本节点.试试这个(小提琴):

$('.post').each(function() {
    var data = [];
    $(this).contents().each(function() {
        if ( this.nodeType === Node.TEXT_NODE ) {
            data.push(this);
        }
    }).end().append( $('<div class="red" />').append(data) );
});
Run Code Online (Sandbox Code Playgroud)

HTML:

<div class="post">
    <div class="whatever">This should remain untouched</div>
    I want to wrap this in div.red
</div>
Run Code Online (Sandbox Code Playgroud)

CSS:

.red{background:red}
Run Code Online (Sandbox Code Playgroud)