Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery是类型选择器的第一个吗?_Javascript_Jquery_Jquery Selectors - Fatal编程技术网

Javascript 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>

如何使用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>
    <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不应该这样做。这个答案基本上与相同,只是您更改了它以选择错误的元素。