如何获得第一个元素而不是在jQuery中使用[0]?


91

我是jQuery新手,如果这是一个愚蠢的问题,我深表歉意。

当我使用它查找使用id的元素时,我知道总是存在一个匹配项,为了访问它,我将使用索引[0]。有更好的方法吗?例如

var gridHeader = $("#grid_GridHeader")[0];

Answers:


98

您也可以使用.get(0),但是...您不需要对ID找到的元素进行操作,该元素应该始终是唯一的。我希望这只是示例中的一个疏忽...如果在您的实际页面上是这种情况,则需要对其进行修复,以便您的ID是唯一的,并改用类(或其他属性)。

.get()(如[0])获取DOM元素,如果您想使用jQuery对象,.eq(0)或者.first()改为使用:)


17
除此之外$("#id") /* jQuery object */ != $("#id").get(0) /* DOM Object */
BrunoLM 2010年

9
@BrunoLM-如果您想要一个DOM元素,document.getElementById('id')请不要创建一个jQuery对象只是将其扔掉……从选择器引擎到对象包装器,这都是非常浪费的,没有正当理由,这简直是过分了:)
尼克Craver

尼克,我同意,也许我只是在使用jquery做其他事情而变得很傻。
Rubans 2010年

2
@NickCraver-谢谢。我刚刚更换了一堆document.getElementById('id')$('#id')[0],但不喜欢[0]。您对浪费的评论使我开始思考$0 = function(id){return document.getElementById(id);},现在我$0('id')更喜欢了。字符数与相同$('#id'),但我希望是这样$#('id')
Bruno Bronosky

2
希望这些方法有一个变体,可以从空结果集中返回假值。
史蒂芬·哈里斯

25

$("#grid_GridHeader:first") 也可以。


3
我认为这是在这里处理您的问题的最佳方法。与.eq(0)相比,它读起来不错
Dave Gregory

18

您可以使用第一种方法:

$('li').first()

http://api.jquery.com/first/

顺便说一句,我同意尼克·克拉弗(Nick Craver)-使用document.getElementById()...


1
如果未找到任何元素,则返回一个空数组。在逻辑语句中要小心使用,就像[]会使用一样true
Ashley

4

假设只有一个元素:

 $("#grid_GridHeader")[0]
 $("#grid_GridHeader").get(0)
 $("#grid_GridHeader").get()

...都是等效的,返回单个基础元素。

从jQuery源代码中,您可以发现get(0),在本质上,该[0]方法与该方法具有相同的作用:

 // Return just the object
 ( num < 0 ? this.slice(num)[ 0 ] : this[ num ] );

谢谢你所做的一切,除了get()之外,其他一切似乎都没有得到第一项。
Rubans 2010年

实际上,我可以从尼克·
克雷夫(


3

您可以使用第一个选择器。

var header = $('.header:first')

返回具有单个元素的数组。
Nitin

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.