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

IT技术 javascript jquery
2021-03-01 21:21:48

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

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

var gridHeader = $("#grid_GridHeader")[0];
6个回答

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

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

除了那个 $("#id") /* jQuery object */ != $("#id").get(0) /* DOM Object */
2021-05-15 21:21:48
@NickCraver - 谢谢。我只是替换了一堆document.getElementById('id')with$('#id')[0]但不喜欢[0]. 你对浪费的评论让我想定义$0 = function(id){return document.getElementById(id);},现在我$0('id')喜欢与 相同数量的字符$('#id'),我只是希望它可以是$#('id')
2021-05-16 21:21:48
Nick 我同意,也许我只是将 jquery 用于所有事情是相当愚蠢的。
2021-05-19 21:21:48
希望这些方法有一个变体,可以从空结果集中返回一个假值。
2021-05-19 21:21:48
@BrunoLM - 如果你想要一个 DOM 元素,document.getElementById('id')不要创建一个 jQuery 对象只是为了把它扔掉......这是非常浪费的,从选择器引擎到对象包装器,它只是无缘无故地矫枉过正:)
2021-05-20 21:21:48

$("#grid_GridHeader:first") 也有效。

也是出于性能原因的最佳方法(例如,当您有一个包含 1000 行的表时,无需从所有行构建一个 jquery 对象)
2021-05-03 21:21:48
我认为这是在这里处理您的问题的最佳方式。它读起来很好,而不是 .eq(0)
2021-05-05 21:21:48

您可以使用第一种方法:

$('li').first()

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

顺便说一句,我同意 Nick Craver 的观点——使用 document.getElementById()...

如果没有找到元素,这将返回一个空数组。在逻辑语句中小心使用,因为[]将 eval 到true.
2021-05-13 21:21:48

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

var header = $('.header:first')
返回具有单个元素的数组。
2021-04-26 21:21:48

http://api.jquery.com/eq/

$("#grid_GridHeader").eq(0)