在div中选择文本,为什么.text不起作用?

时间:2018-10-18 23:22:42

标签: javascript jquery

在Chrome的开发者控制台中。我正在尝试从网站上获取一段文字。

示例:

<div class="someClass">This is some text!</div>

我希望它能正常工作,但是它返回“ undefined”

$('.someClass')[0].text

但当文本位于具有相同类的标记内时,此方法仍然有效。当文本仅位于div内时,会发生什么特殊情况吗?谢谢!

3 个答案:

答案 0 :(得分:1)

$('.someClass')[0]返回DOM元素而不是jQuery对象。

因此,您可以使用的是$('.someClass')[0].textContent

答案 1 :(得分:1)

您遇到的问题是您正在使用方括号来引用第一个元素。使用jQuery,returns the DOM node和DOM没有text属性。

您需要使用.eq(0)来引用jQuery,这是一种方法,因此需要括号。

console.log($('.someClass').eq(0).text())
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="someClass">This is some text!</div>

答案 2 :(得分:0)

此:

$('.someClass')

...返回jQuery选择。您可以通过以下方式获取文字:

$('.someClass').text()

但是,如果有多个.someClass,您将获得所有这些项目的文本。这可能就是为什么您拥有

$('.someClass')[0]

...但是这不再是jQuery选择,而是一个DOM元素,既没有.text()方法也没有.text属性。有一个innerTexttextContent属性,它们都不具有广泛的浏览器支持,所以也许您最好这样做:

$('.someClass').first().text()