按行

时间:2015-11-25 15:01:27

标签: javascript jquery

很抱歉,如果这个问题措辞奇怪,但这就是我要做的事情。我必须从网页收集特定的信息行。我遇到的问题是我无法弄清楚使用正确的选择器,eq()无效。以下是我试图从中获取信息的页面的来源。

<div class="info" id="Data">
Domain Name: example.com
<br>
Registry: 12345
<br>

当我检查元素时,我得到div#Data.info(text)我尝试了$('div#info.Data').eq(1).text()和其他一些组合。我是一个新的脚本和(文本)部分,我认为是什么让我失望。

2 个答案:

答案 0 :(得分:9)

让我们来看看你的jQuery:

$('div#info.Data') // Gets <div> with id="info" and class="Data"
                   // ^ You have id and class reversed!
.eq(1)             // This gets the 2nd element in the array
                   // ^ You only tried to get 1 element. What is the 2nd?
.text()            // Returns combined text of selected elements

还有另一个问题。您的文字不在其自己的元素中。要在当前元素中获取文本节点,可以调用.contents()。但是jQuery并不像常规元素那样处理文本节点,所以我会小心对它们进行任何额外的操作。

您可以检索如下文字:

$("#Data").contents().eq(0).text() // -> 'Domain Name: example.com'
$("#Data").contents().eq(2).text() // -> 'Registry: 12345'

<强> Fiddle

答案 1 :(得分:2)

首先,你有idclass错误的方法,但这是一个简单的解决方法。

您的解决方案的替代方法是获取所有内容,将其拆分为数组,然后清除由新行和<br />标记引起的空字符串。

然后可以在任何你喜欢的事情中使用它。

&#13;
&#13;
$(document).ready(function() {
  var content = $('div#Data.info').eq(0).text();
  var lines = content.split("\n").filter(Boolean)
  console.log(lines);
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="info" id="Data">
Domain Name: example.com
<br>
Registry: 12345
<br>
</div>
&#13;
&#13;
&#13;