我有这个小文字

<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;


我现在的问题是我不知道该如何选择元素,包括double br标记后的textnode。

标记和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;
    });​​​​


取而代之的是,对元素的所有子节点进行两次迭代,一次是获取double <br>元素的数量,另一个是对中间所有元素进行过滤,而在中间保留所有元素。

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

关于javascript - 在中间分割一个textnode,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9886767/

10-13 05:55