Hi Alex,

1-) Doesn't work because * E F:first-child * pseudo-class selector matches the 
F element that is the first child of the E element ONLY if there isn't another 
element BEFORE the E element within the parent E. See specs at: 
http://www.w3.org/TR/CSS2/selector.html#first-child

 2-) If you have a thead or/and a tbody in your markup, to select the first 
thead use the pseudo-class :eq instead. 

$("#myTable tbody:eq(0) tr").length )

MaurĂ­cio
  -----Mensagem Original----- 
  De: Alex Wibowo 
  Para: jquery-en@googlegroups.com 
  Enviada em: quarta-feira, 25 de fevereiro de 2009 08:33
  Assunto: [jQuery] Re: tbody:first-child & thead


  Hi Karl.. thanks for the reply...

  what i actually wanted is.... to select the first tbody.... thats why i 
specified tbody:first-child there....
  since a table can have multiple tbody... i want to select the first tbody.

  What I didnt understand is.... about the thead..

  the following works....


  <table id="myTable">
     <tbody>
          <tr>
           ....
          </tr>
    </tbody>
  </table>

  $("#myTable  tbody:first-child  tr").length;


  but this doesnt work:



  <table id="myTable">
     <thead>
         <tr>
  ...
         </tr>
    </thead>

     <tbody>
          <tr>
           ....
          </tr>
    </tbody>
  </table>

  $("#myTable  tbody:first-child  tr").length;


  I dont know how  thead causes the second code above not to work...





  On Wed, Feb 25, 2009 at 8:11 PM, Karl Rudd <karl.r...@gmail.com> wrote:


    tbody:first-child doesn't select the "first child of the tbody" it
    says "select the tbody that is the 'first-child' of it's parent".

    So what you are actually wanting to say is:

    $("#myTable tbody tr:first-child")

    Which is "select the tr that is the first child of tbody"

    http://docs.jquery.com/Selectors/firstChild

    Karl Rudd


    On Wed, Feb 25, 2009 at 8:08 PM, Alex Wibowo <alexwib...@gmail.com> wrote:
    > sorry.... i should say....
    > "how does that explain the behaviour when there's no thead" (because it
    > works when thead doesnt exist)
    >
    > On Wed, Feb 25, 2009 at 8:06 PM, Alex Wibowo <alexwib...@gmail.com> wrote:
    >>
    >> how does that explain the behaviour when there's thead then??
    >>
    >>
    >> On Wed, Feb 25, 2009 at 7:47 PM, David Muir <davidkm...@gmail.com> wrote:
    >>>
    >>> It's because tbody:first-child is already selecting the tr, so you're
    >>> effectively doing:
    >>> tbody tr tr (where the first tr is the first child of tbody)
    >>>
    >>> Cheers,
    >>> David
    >>>
    >>>
    >>> Alex Wibowo wrote:
    >>>>
    >>>> Hi all,
    >>>>
    >>>> I have a code that counts the number of rows in a table...
    >>>>
    >>>> the table looks like:
    >>>>
    >>>> <table id="myTable">
    >>>>  <thead>
    >>>>   ...
    >>>>   </thead>
    >>>>
    >>>>   <tbody>
    >>>>        <tr>
    >>>>         ....
    >>>>        </tr>
    >>>>  </tbody>
    >>>> </table>
    >>>>
    >>>>
    >>>> and my jquery looks like:
    >>>>
    >>>> $("#myTable  tbody:first-child  tr").length;
    >>>>
    >>>> strange enough.... that always returns 0.
    >>>> but if i remove the thead from the table... then it will return the
    >>>> correct number of rows..
    >>>>
    >>>> or alternatively, i can keep the thead, but use the following instead:
    >>>>
    >>>> $("#myTable  tbody  tr").length;
    >>>>
    >>>> i.e. without specifying first-child.
    >>>>
    >>>> Can anyone explain this behaviour?
    >>>>
    >>>>
    >>>>
    >>>> THanks a lot!
    >>>>
    >>>>
    >>>>
    >>>> --
    >>>> Best regards,
    >>>>
    >>>>
    >>>> WiB
    >>>>
    >>>
    >>
    >>
    >>
    >> --
    >> Best regards,
    >>
    >>
    >> WiB
    >>
    >
    >
    >
    > --
    > Best regards,
    >
    >
    > WiB
    >
    >




  -- 
  Best regards,


  WiB

Reply via email to