我有这个小文字
<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标签之后的textnode。
这是标记和JS的小提琴 http://jsfiddle.net/ATbKU/
如果我只是想知道如何完成它就足够了;-)
答案 0 :(得分:1)
我提出了这个不涉及切片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>
元素的数量,另一次在中间之前过滤掉所有元素,保留后面的元素。