Javascript 有没有更好的方法访问使用JQuery选择器选择的第一个元素?

Javascript 有没有更好的方法访问使用JQuery选择器选择的第一个元素?,javascript,jquery,html,Javascript,Jquery,Html,有没有更好的方法来编写它,这样我就不必使用[0],就可以通过JQuery文本而不是innerText来访问文本?我不想使用innerText实现跨浏览器兼容性 $('#' + controlBestPractice)[0].innerText 如果您的选择器返回多个元素,请使用此选项(我们不知道控件最佳实践,例如,它可能是#div id p): 正如bhamlin在评论中指出的,您似乎正在使用id选择器,因此应该只有一个元素,所以这应该可以工作: $('#' + controlBestPrac

有没有更好的方法来编写它,这样我就不必使用[0],就可以通过JQuery文本而不是innerText来访问文本?我不想使用innerText实现跨浏览器兼容性

$('#' + controlBestPractice)[0].innerText
如果您的选择器返回多个元素,请使用此选项(我们不知道
控件最佳实践
,例如,它可能是
#div id p
):

正如bhamlin在评论中指出的,您似乎正在使用id选择器,因此应该只有一个元素,所以这应该可以工作:

$('#' + controlBestPractice).text()

您可以尝试以下方法:

$('#' + controlBestPractice + ':eq(0)').text();


你们为什么要做
.first()
?这是一个ID,应该只有一个

$('#' + controlBestPractice).text()
会很好用的

我想在以下情况下您可能需要
.first()
,但这只是一种糟糕的(令人困惑的)选择方式:

<div id="foo">
    <div class="bar">a</div>
    <div class="bar">b</div>
    <div class="bar">c</div>
</div>

controlBestPractice = "foo .bar";
$('#' + controlBestPractice).text(); // returns abc
$('#' + controlBestPractice).first().text() // returns a

A.
B
C
controlBestPractice=“foo.bar”;
$('#'+controlBestPractice).text();//返回abc
$('#'+controlBestPractice).first().text()//返回

您不需要在末尾添加
[0]
,因为它是一个id选择器。
表示您是按id选择的,因为id是唯一的,jQuery将只返回一个元素。

$(“#”+controlBestPractice).text()
sachleen是正确的#表示它是一个id,必须只有一个具有该id的项,因此无需使用.first()或:first。[0]用于访问纯dom对象,而不是jQuery对象,而不是第一个选定的元素。@OnurTOPAL#仅表示选择器以id开头。@Christophe据我所知,它不是以id开头的,它表示它与CSS选择器相同,并且就性能而言,它使用CSS选择器或document.getElementById()。不是其他花哨的jquery选择器(不确定旧浏览器的情况),它只返回一个元素,即使有更多元素,请检查以下链接@OnurTOPAL,请参见我答案中的示例。选择器可能不止一个ID。根据这一点,我们所知道的是父元素有一个ID。选择器不能选择它的子元素。因为选择器是通过
ID
,所以理论上没有必要使用
first()
,因为应该只有一个。@bhamlin不正确,它可能是一个以id开头的选择器。@Christophe true,我编辑了我的答案以涵盖不同的情况,因为我们不知道使用了什么选择器jQuery选择器返回一个数组。数组没有javascript
innerText
属性,因此您必须使用
[0]
来选择数组中具有
innerText
属性的HTML元素(它只有一个)。与其他元素的注释相同:问题并不是说选择器是一个id,它只说选择器以id开头。@Christophe是的,我刚刚想到了这个。但这是一种令人困惑的选择方式。
$('#' + controlBestPractice).text()
<div id="foo">
    <div class="bar">a</div>
    <div class="bar">b</div>
    <div class="bar">c</div>
</div>

controlBestPractice = "foo .bar";
$('#' + controlBestPractice).text(); // returns abc
$('#' + controlBestPractice).first().text() // returns a