有没有更好的方法来编写这个,所以我不必使用[0],所以我可以通过JQuery Text而不是innerText访问文本?我不想使用innerText来兼容Cross Browser。
$('#' + controlBestPractice)[0].innerText
答案 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()
可以正常使用
我认为在下列情况下您可能需要.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只会返回一个元素。