Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/438.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 获取元素jquery中的第一行文本_Javascript_Jquery_Html - Fatal编程技术网

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

Javascript 获取元素jquery中的第一行文本,javascript,jquery,html,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> 废话废话。 标题 ... 它也可以是这样的:

我有这样一个示例元素:

<div id="element">
  Blah blah blah.
  <div>Header</div>
  ...
</div>
<div id="element">
  <span>Blah blah blah.</span>
  <h4>Header</h4>
  ...
</div>

废话废话。
标题
...
它也可以是这样的:

<div id="element">
  Blah blah blah.
  <div>Header</div>
  ...
</div>
<div id="element">
  <span>Blah blah blah.</span>
  <h4>Header</h4>
  ...
</div>

废话废话。
标题
...

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

首先获取元素的内容

var content = $('#element').html();
var firstLine = tmp[0];
然后使用换行符将文本拆分为数组

tmp = content.split("\n");
数组的第一部分是元素的第一行

var content = $('#element').html();
var firstLine = tmp[0];

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

var content = $('#element').html();
var arr = content.split('<h4>');
console.log(arr[0]);
var content=$('#element').html();
var arr=内容分割(“”);
console.log(arr[0]);
当然,假设文本正确地包装在元素中。您可以检查第一个元素之前是否有文本:

/\s*</.test(myElement.html())
/\s*使用该方法获取所有子节点,包括文本节点,过滤掉任何空(或仅空白)节点,然后获取集合的第一个

var first_line = $("#element")
                       .contents()
                       .filter(function() { 
                           return !!$.trim( this.innerHTML || this.data ); 
                       })
                       .first();
文本节点:


元素:

计数器从1开始

myElement.text().split('\n')[1]

我首先想到的是什么断线,但我在Fx中看到的至少是断线。然而,依赖它是危险的。这是第一行:
alert($(“#元素”).text().split(/\n/)[1])
th是一个空字符串。。。我相信第一种情况不适用,它会匹配标题而不是废话(也许应该选择更好的示例文本lol),如果你得到mytext,它会变得非常困难。我想你需要一些递归地遍历DOM的东西。它必须是多防弹的?嗨,你能解释一下你为什么要回来吗!!?是什么!!?它将转换为值的等效布尔值。修剪后,如果
.innerHTML
.data
返回空字符串,
会将其转换为布尔值
false
,因为空字符串被视为“false”值。任何非空字符串都将导致
true
+1来自我,但是性能谨慎可能要考虑使用<代码> $.eAh()/<代码>而不是<代码>文件()/<代码>。今天对我来说有点晚了,但一个例子是(忽略第二次修订,我在这里半睡了!)@Andy E:不错。逗号运算符的使用也很好@Harry:只要找到一个非空节点,它就可以让你停止循环。使用
.filter()
时,必须让循环为
.contents()
返回的每个元素运行。@Andy E:为了好玩,这里有一个无逗号
返回!$。trim((第一行=this.innerHTML | | this.data):)