Javascript jQuery是类型选择器的第一个吗?
如何使用jQuery选择下面Javascript jQuery是类型选择器的第一个吗?,javascript,jquery,jquery-selectors,Javascript,Jquery,Jquery Selectors,如何使用jQuery选择下面中的第一个元素 <div> <h1>heading</h1> <p>How do I select this element with jQuery?</p> <p>Another paragraph</p> </div> 标题 如何使用jQuery选择此元素 <div> <h1>heading</h1>
中的第一个
元素
<div>
<h1>heading</h1>
<p>How do I select this element with jQuery?</p>
<p>Another paragraph</p>
</div>
标题
如何使用jQuery选择此元素
<div>
<h1>heading</h1>
<p>How do I select this element with jQuery?</p>
<p>Another paragraph</p>
</div>
另一段
假设您已经引用了div
:
$(yourDiv).find("p").eq(0);
如果第一个p
始终是div
的直接子级,则可以使用子级
而不是查找
一些备选方案包括:
$(yourDiv).find("p:eq(0)"); //Slower than the `.eq` method
$(yourDiv).find("p:first");
$(yourDiv).find("p").first() //Just an alias for `.eq(0)`
请注意,eq
方法始终是最快的方法。下面是eq
方法、:eq
选择器和:first
选择器的结果(我没有为first
方法操心,因为它只是eq(0)
的别名):
答案太短了,没有这句无用的话就发不出去
编辑
这绝对是一个缓慢的选择。在查看了Jame的速度测试之后,jQuery选择器在使用css选择器的情况下工作得最好
$('div p').first()
应该有用。我想。$(“divp”).first()
或美元('divp:first')
参考:
请记住,first()只匹配一个元素,:first子选择器可以为每个父元素匹配多个:1 你几乎知道答案(从你的帖子标题)。jQuery中有一个名为
:第一个类型的选择器。使用它自动查找类并将其添加到第一个p标记,如下所示:
$("div p:first-of-type").addClass('someClass');
这应该行得通
$( "div p:first-of-type" ).css( "font-size: 10px" );
上面的代码在div中找到@Denver指向的第一段,并将其字体大小更改为10px
下面的示例进一步解释了@jamesalardice,它等于.First(),因为两者都匹配一个元素。它是否达到预期效果取决于网页设计师的挑战。@Farrell-是的,它等于。first
和:first
和:eq(0)
和:lt(1)
(使用jQuery编写相同内容的方法有很多),但是它应该是这群人中最禁食的。@rkw-注意,:n个孩子
不是等价的,在这种情况下不起作用。您的想法是正确的,当选择器具有CSS等价物时,效果最好,特别是在现代浏览器中,因为可以使用本机的querySelector
和querySelector所有方法来代替Sizzle。很好,这看起来很有说服力,谢谢!没问题,很高兴我能帮上忙:)如果你有兴趣,另一个选择是:lt(1)
。我几乎可以肯定,.eq
方法也会慢一些,但这是实现同样目标的另一种方法。哇,这是一个显著的区别。我不明白为什么jQuery会允许:首先。在后台,它应该转换为:n个子项(1)。没有这样做有什么原因吗?@rkw-:第n个孩子做了一些非常不同的事情。如果元素与选择器匹配,它将返回指定索引处的元素(基于1,只是为了增加混淆!)。在jsperf测试中,:n子项
示例将不匹配任何元素-第一个元素是h2
,而不是p
。我相信在幕后,:first
被转换为:eq(0)
,这在我的原始测试中显示。@rkw-可能值得注意的是,:first类型的
等仅在支持querySelectorAll
的浏览器中工作。较旧的浏览器(尤其是IE8及以下版本)会抛出错误,因此最好坚持使用eq
:类型的第一个和:类型的最后一个是可用的,因为jQuery 1.9不应该这样做。这个答案基本上与相同,只是您更改了它以选择错误的元素。