无法用jquery选择第一个孩子

时间:2011-11-28 17:06:43

标签: javascript jquery html css-selectors

我不明白我做错了什么。我有以下html元素:

<div id="accordion">
    <h3>
        <a href="#">Section 1</a></h3>
    <div>
        <p>
            Mauris mauris ante, blandit et, ultrices a, suscipit eget, quam. Integer ut neque.
            Vivamus nisi metus, molestie vel, gravida in, condimentum sit amet, nunc. Nam a
            nibh. Donec suscipit eros. Nam mi. Proin viverra leo ut odio. Curabitur malesuada.
            Vestibulum a velit eu ante scelerisque vulputate.
        </p>
    </div>
    <h3>
        <a href="#">Section 2</a></h3>
    <div>
        <p>
            Sed non urna. Donec et ante. Phasellus eu ligula. Vestibulum sit amet purus. Vivamus
            hendrerit, dolor at aliquet laoreet, mauris turpis porttitor velit, faucibus interdum
            tellus libero ac justo. Vivamus non quam. In suscipit faucibus urna.
        </p>
    </div>                                    
</div>

这个元素(<div id='accordion'>)清楚地表明它的第一个孩子是h3标签,下一个孩子是div标签然后是h3等

我想选择这个div的第一个孩子。换句话说,我想选择第一个h3标签

因此我尝试过:

    $("#accordion:first-child").css("font-size","30px");

     $("#accordion:first").css("font-size","30px");

两种方式都将30px的字体应用于主div元素(<div id='accordion'>

我做错了什么我想只选择手风琴的第一个孩子它显然是h3标签

修改

我只是错过了一个空间。 this page不包括节奏。

我必须从

更改我的代码
$("#accordion:first").css("font-size","30px");

$("#accordion :first").css("font-size","30px");

6 个答案:

答案 0 :(得分:12)

您必须将父级的ID与:first-child选择器分开。此外,第一个子选择器将选择所有第一个子元素,而不仅仅是一个。要只选择一个,您必须使用:first选择器。

$("#accordion h3:first").css("font-size","30px");

这是css选择器(jQuery大量使用)的工作方式。

请在css descendant selector阅读。

  

有时,作者可能希望选择器匹配作为文档树中另一个元素的后代的元素(例如,“匹配”   H1元素包含的那些EM元素“)。后代   选择者以模式表达这种关系。 后代   选择器由两个或多个由白色分隔的选择器组成   空间

此外,根据jQuery文档,有更好的方法来检索元素的第一个子元素,以实现更好的性能。

  

因为:首先是jQuery扩展而不是CSS的一部分   规范,查询使用:首先不能利用   本机DOM querySelectorAll()提供的性能提升   方法。使用时达到最佳性能:首先选择   元素,首先使用纯CSS选择器选择元素   使用.filter(“:first”)。

答案 1 :(得分:2)

阅读:first-child选择器,您正在寻找的是:

$('#accordion h3:first-child').css('font-size', '30px');

来自jQuery API文档:

  

说明:选择作为其第一个子元素的所有元素   父节点。

因此,选择器#accordion:first-child#accordion元素,它是其父元素的第一个子元素;虽然#accordion h3:first-childh3中包含的#accordion,但它是它的父级的第一个孩子。

答案 2 :(得分:1)

$( '#accordion' ).children( ':first' ).css( ...

答案 3 :(得分:1)

试试这个:

$('#accordion').children().first().css(...

答案 4 :(得分:0)

$(":first", "#accordion").css("font-size", "30px")

答案 5 :(得分:0)

使用jquery first-selectorfirst-child选择器之间存在差异。

由于你有多个第一子元素,你应该只使用第一个选择器,否则它可以像@Jose一样提到所有的第一子元素。

$("#accordion h3:first").css("font-size","30px");

 OR


 $("#accordion h3:first").css("font-size","30px");

无论哪种方式都应该有效!