获取元素jquery中的第一行文本

时间:2011-09-11 20:27:29

标签: javascript jquery html

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

<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。我怎么做?感谢。

5 个答案:

答案 0 :(得分:16)

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

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)

这是你的想法。当然如果你想获得前一行的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]