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

Har*_*rry 9 html javascript jquery

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

<div id="element">
  Blah blah blah.
  <div>Header</div>
  ...
</div>
Run Code Online (Sandbox Code Playgroud)

它也可以是这样的:

<div id="element">
  <span>Blah blah blah.</span>
  <h4>Header</h4>
  ...
</div>
Run Code Online (Sandbox Code Playgroud)

我想得到元素中文本的第一行(松散地定义行)(Blah blah blah.).它可能包含在子元素内部,也可能只是裸体textnode.我怎么做?谢谢.

use*_*716 16

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

var first_line = $("#element")
                       .contents()
                       .filter(function() { 
                           return !!$.trim( this.innerHTML || this.data ); 
                       })
                       .first();
Run Code Online (Sandbox Code Playgroud)

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

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

  • 来自我的+1,但表现谨慎可能要考虑使用`$ .each()`而不是`filter()`.对我来说现在有点晚了,但是这方面的一个例子是http://jsfiddle.net/AndyE/Yftnh/3/(忽略修订2,我在这里半睡半醒!) (2认同)
  • @Andy E:很好.很好地使用了逗号运算符.@Harry:它只是让你在找到一个非空节点后停止循环.使用`.filter()`你必须让循环运行`.contents()`返回的每个元素. (2认同)