关于javascript:获取元素jquery中的第一行文本

getting the first line of text in an element jquery

我有一个这样的示例元素:

1
2
3
  Blah blah blah.
  Header
  ...

它也可以是这样的:

1
2
3
  <span>Blah blah blah.</span>
  <h4>Header</h4>
  ...

我想得到元素中文本的第一行(松散地定义行)(blah blah blah)。它可能被包装在子元素中,也可能只是裸文本节点。我该怎么做?谢谢。


使用contents()docs]方法获取所有子节点,包括文本节点,过滤掉任何空(或仅空白)节点,然后获取集合的第一个。

1
2
3
4
5
6
var first_line = $("#element")
                       .contents()
                       .filter(function() {
                           return !!$.trim( this.innerHTML || this.data );
                       })
                       .first();

文本节点:http://jsfiddle.net/yftnh/

元素:http://jsfiddle.net/yftnh/1/


1
2
3
4
5
6
var myElement = $("#element");
while(myElement.children().length > 0)
{
   myElement = myElement.children().first();
}
var firstText = myElement.text();

当然,假设文本被正确包装在元素中。您可以检查第一个元素之前是否有文本:

1
/\s*</.test(myElement.html())


这是给你的主意。当然,如果在您要获取的行之前有h4元素:

1
2
3
var content = $('#element').html();
var arr = content.split('<h4>');
console.log(arr[0]);


计数器从1开始

1
2
myElement.text().split('
'
)[1]

首先获取元素的内容

1
var content = $('#element').html();

然后使用换行符将文本拆分为数组

1
2
tmp = content.split("
"
);

数组的第一部分是元素的第一行

1
var firstLine = tmp[0];