拆分文本节点在中间

Split a textnode in the middle

本文关键字:在中间 节点 文本 拆分      更新时间:2023-09-26

我有这个小文本

<div>
Hello world<br>
this is a good<br>
text!
<br><br>
Whatever I need help<br>
so please!<br>
<br><br>
<!--    I WANT TO SELECT THE ELEMENTS AFTER THIS LINE INCLUDING TEXTNODE -->
It will be very nice<br>
when it works!
<br><br>
It will be very nice<br>
when it works!
<br><br>
</div>

正如你所看到的,它看起来像不同的部分。

我可以通过搜索标记中的所有双<br><br>标记并将其除以2来找到中间部分。我创建了这个小功能:

var content = $("div").html().toString();
var middle = content.match(/<br[^>]*><br[^>]*>/g).length / 2;

我现在的问题是,我不知道如何选择元素,包括双br标记后面的文本节点。

这是对标记和JS的篡改http://jsfiddle.net/ATbKU/

如果我只是得到一个关于如何完成的提示就足够了;-)

我提出了这个不涉及对HTML:进行切片的解决方案

var content    = $("div").contents(),
    dblBRCount = content.filter(function () {
        return this.tagName == "BR" && this.nextSibling.tagName == "BR";
    }).length,
    filterCount = 0,
    result = content.filter(function () {
        if (filterCount >= (dblBRCount / 2))
            return true;
        else if (this.tagName == "BR" && this.previousSibling.tagName == "BR")
            filterCount++;
        return false;                
    });​​​​

相反,它在元素的所有子节点上迭代两次,一次是获得双<br>元素的数量,另一次是过滤掉中间之前的所有元素,保留后面的元素。

工作演示:http://jsfiddle.net/AndyE/ATbKU/1/