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

时间:2012-07-17 16:38:38

标签: javascript jquery html

有没有更好的方法来编写这个,所以我不必使用[0],所以我可以通过JQuery Text而不是innerText访问文本?我不想使用innerText来兼容Cross Browser。

$('#' + controlBestPractice)[0].innerText

4 个答案:

答案 0 :(得分:6)

如果您的选择器返回多个元素,请使用first(我们实际上并不知道controlBestPractice内部的内容,例如它可能是#div-id p):

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

正如bhamlin在评论中指出的那样,你似乎正在使用id选择器,所以应该只是一个元素,所以这应该有效:

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

答案 1 :(得分:1)

您可以尝试这样的事情:

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

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

答案 2 :(得分:1)

你们为什么要做.first()?它只是一个ID。

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

可以正常使用

DEMO

我认为在下列情况下您可能需要.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

答案 3 :(得分:1)

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