2

我正在使用 jQuery,但我遇到了一些问题。我有一堆具有某个类的 DIV,我正在尝试选择其中的第一个。first-child由于页面布局(长篇大论),我不能使用伪类。但是我可以通过将 jQuery 对象视为一个数组来获得相同的效果。我的问题是这不返回一个 jQuery 对象,而是一个普通的 Javascript 对象(特别是一个 HTMLDivElement)。

$("#wizard div.collapsible")[0].addClass("selected");

失败是因为返回的对象没有addClass函数。如果我使用它也会失败.get(0)。但是,这确实有效。

$($("#wizard div.collapsible")[0]).addClass("selected");

有没有办法做到这一点而不必做双 jQuery 选择器?(并不是说这有什么大不了,但它看起来有点令人困惑。)

4

5 回答 5

8

这就是eqandfirst函数的作用。eq通过从 0 开始的索引从选择中获取元素,而first仅从选择中获取第一个元素。

$("#wizard div.collapsible").eq(0).addClass("selected");
$("#wizard div.collapsible").first().addClass("selected");

不过,有趣的是,您实际上已经找到了从另一个选择中获取包含第一个元素的 jQuery 选择的最快方法:

$($("#wizard div.collapsible")[0]).addClass("selected");

这不是一个好方法,因为它很难阅读并且性能优势很小,但它最快的!

于 2013-06-12T17:52:29.620 回答
2

[0]将是一个原始元素。这是正确和理想的行为。如果要保留 jQuery 对象,请使用$("selector:first")or$("selector").first()$("selector").eq(0)获取包裹在 jQuery 对象中的第一个元素。

于 2013-06-12T17:51:38.427 回答
0

$.eq应该做的伎俩:

$("#wizard div.collapsible").eq(0).addClass("selected");

如果您选择一个由多个元素共享的类,则会返回一个 jQuery 集合。尝试以数组的形式访问该集合将返回一个原始对象,而$.eq为了方便起见,它被设计为返回一个 jQuery 对象。

于 2013-06-12T17:52:02.820 回答
0

尝试..

$("#wizard div.collapsible").eq(0).addClass("selected");

或者...首先()

$("#wizard div.collapsible").first().addClass("selected");
于 2013-06-12T17:52:15.687 回答
0

正如你所说,当你使用$('#wizard div.collapsible')[0]你返回一个普通的 JS 对象时,因为它是一个普通的 JS 对象,而不是一个 jQuery 对象,你不能在它上面使用 jQuery 方法。您可以使用双选择器或使用$('#wizard div.collapsible')[0].className = "selected";

于 2013-06-12T17:52:38.517 回答