I didn't know about the closest method and I could use it in my case.
Thank you.

On Apr 16, 8:33 am, Leonardo K <leo...@gmail.com> wrote:
> Maybe is easier if you put a class (wrapper) in your div that wrap all other
> divs, and then you could use:
>
> $(this).closest('div.wrapper').find(":checkbox");
>
> and
>
> $(this).closest('div.wrapper').prev();
>
> On Thu, Apr 16, 2009 at 09:26, Dragon-Fly999 <dragon-fly...@hotmail.com>wrote:
>
>
>
> > Thanks, Karl.  Your suggestions work fine.  I just started using
> > JQuery and found the selectors very powerful.  I was wondering if the
> > selectors that you suggested can be less dependent on the number of
> > divs in that section of the HTML.
>
> > Instead of using "$(this).parent().parent().find(':checkbox')", is
> > there a way to select using the following rule:
> > Go up the hierarchy (regardless of how many parents there are) until
> > the first <a> is found, then give me a list of all the checkboxes that
> > are the descendants of the <div> right after the <a>.
>
> > Similarly, instead of using "$(this).parent().parent().prev()", is
> > there a way to select using the following rule:
> > Go up the hierarchy (regardless of how many parents there are) and
> > return the first <a>.
>
> > The reason that I asked these questions is because I can see myself
> > adding more <div>'s in that section of the HTML.
>
> > On Apr 15, 10:31 pm, Karl Swedberg <k...@englishrules.com> wrote:
> > > On Apr 15, 2009, at 6:24 PM, Dragon-Fly999 wrote:
>
> > > > Hi, I have a couple of questions about selectors.  I have the
> > > > following HTML:
>
> > > > =====
>
> > > > Some <a> elements and <input> elements here.
> > > > ...
> > > > ...
>
> > > > <a id="info-1-heading">Information Type 1</a>
> > > > <div>
> > > >  <div>
> > > >    <input class="cat" id="first" type="checkbox"/><label
> > > > for="first">First</label>
> > > >  </div>
> > > >  <div>
> > > >    <input class="cat" id="mid" type="checkbox"/><label
> > > > for="mid">Middle</label>
> > > >  </div>
> > > >  <div>
> > > >    <input class="info1-cat" id="last" type="checkbox"/><label
> > > > for="last">Last</label>
> > > >  </div>
> > > > </div>
>
> > > > ...
> > > > ...
> > > > More <a> elements and <input> elements here.
>
> > > > =====
>
> > > > Question 1:
> > > > In the click handler of the first checkbox, I would like to get the
> > > > first, middle, and last checkboxes (but not the other checkboxes on
> > > > the page). What selector should I use?
>
> > > There are a number of options, but this will do the trick:
>
> > > $(this).parent().parent().find(':checkbox')
>
> > > > Question 2:
> > > > In the click handler of the first checkbox, I would like to get the
> > > > first <a> element that it finds traversing up the hierarchy (i.e. the
> > > > <a> with id="info-1-heading").  What selector should I use?
>
> > > > Thank you.
>
> > > $(this).parent().parent().prev()
>
> > > or combined:
>
> > > $
> > > (this
> > > ).parent
> > > ().parent
> > > ().find(':checkbox').doSomething().end().prev().doSomethingElse();
>
> > > and a bit more readable:
>
> > > $(this)
> > >    .parent()
> > >      .parent()
> > >        .find(':checkbox').doSomething()
> > >      .end()
> > >        .prev().doSomethingElse();
>
> > > --Karl
>
> > > ____________
> > > Karl Swedbergwww.englishrules.comwww.learningjquery.com

Reply via email to