很抱歉,如果这个问题措辞奇怪,但这就是我要做的事情。我必须从网页收集特定的信息行。我遇到的问题是我无法弄清楚使用正确的选择器,eq()
无效。以下是我试图从中获取信息的页面的来源。
<div class="info" id="Data">
Domain Name: example.com
<br>
Registry: 12345
<br>
当我检查元素时,我得到div#Data.info(text)我尝试了$('div#info.Data').eq(1).text()
和其他一些组合。我是一个新的脚本和(文本)部分,我认为是什么让我失望。
答案 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)
首先,你有id
和class
错误的方法,但这是一个简单的解决方法。
您的解决方案的替代方法是获取所有内容,将其拆分为数组,然后清除由新行和<br />
标记引起的空字符串。
然后可以在任何你喜欢的事情中使用它。
$(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;