我有这个小文字
<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/