jQuery uses the power of CSS selectors.

:first-child is an CSS pseudo-class selector and eq() isn't from CSS sintax.

Further reading: 
http://www.456bereastreet.com/archive/200509/css_21_selectors_part_1/

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


  ahhhhhhhhhhh
  ok ... now i get it......... sorry for wasting your time, guys...
  i thought its E F:first-child reads "the first child of E of type F"... i 
didn't know that it has to explicitly be the first child.

  I didnt even know that this syntax is CSS thing.... i thought it is jQuery's 
syntax.

  Thanks for pointing out to that website!

  Question....   is    :first    &  :eq(n)  also a CSS syntax?


  Thanks again!



  On Wed, Feb 25, 2009 at 11:29 PM, Mauricio (Maujor) Samy Silva 
<css.mau...@gmail.com> wrote:

    Ops! my faul! sorry.
    Previous post errata.

    Read: ...BEFORE the F element ...

    instead of:  ...BEFORE the E element... 



      -----Mensagem Original----- 
      De: Mauricio (Maujor) Samy Silva 
      Para: jquery-en@googlegroups.com 
      Enviada em: quarta-feira, 25 de fevereiro de 2009 09:24
      Assunto: Re: [jQuery] Re: tbody:first-child & thead


      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





  -- 
  Best regards,


  WiB

Reply via email to