我有一个像这样的示例元素:
<div id="element">
Blah blah blah.
<div>Header</div>
...
</div>
它也可以是这样的:
<div id="element">
<span>Blah blah blah.</span>
<h4>Header</h4>
...
</div>
我想得到元素中文本的第一行(松散地定义行)(Blah blah blah。)。它可能包含在子元素内部,也可能只是裸体textnode。我怎么做?感谢。
答案 0 :(得分:16)
使用contents()
[docs]方法获取所有子节点,包括文本节点,过滤掉任何空(或仅空白)节点,然后抓取第一个节点。
var first_line = $("#element")
.contents()
.filter(function() {
return !!$.trim( this.innerHTML || this.data );
})
.first();
答案 1 :(得分:2)
这是你的想法。当然如果你想获得前一行的h4元素:
var content = $('#element').html();
var arr = content.split('<h4>');
console.log(arr[0]);
答案 2 :(得分:2)
var myElement = $("#element");
while(myElement.children().length > 0)
{
myElement = myElement.children().first();
}
var firstText = myElement.text();
当然,假设文本正确地包装在元素中。您可以检查第一个元素之前是否有文本:
/\s*</.test(myElement.html())
答案 3 :(得分:0)
首先获取元素的内容
var content = $('#element').html();
然后使用换行符将文本拆分为数组
tmp = content.split("\n");
数组的第一部分是元素的第一行
var firstLine = tmp[0];
答案 4 :(得分:0)
计数器从1开始
myElement.text().split('\n')[1]