index() returns -1 when the element is not found. It fails because the object array passed contains elements that are not children of your first object.
In your case you need to store a reference to the parent element and pass only it's children to the index() function: var kid = $('#container > .kid:eq(0)'); // to access an arbitrary 'kid' $('.week',kid).index($('.week.selected',kid)); or // to get the selected one var kid = $('#container > .kid.selected'); $('.week',kid).index($('.week.selected',kid)); - ricardo On Oct 21, 9:27 am, jimster <[EMAIL PROTECTED]> wrote: > It seems like I've got somewhere - though I am still confused. > > <div id="container"> > <div id="kid1" class="kid select"> > <div id="k1w1" class="week"></div> > <div id="k1w2" class="week selected"></div> > <div id="k1w3" class="week"></div> > <div id="k1w4" class="week"></div> > </div> > > <div id="kid2" class="kid"> > <div id="k2w1" class="week"></div> > <div id="k2w2" class="week"></div> > <div id="k2w3" class="week"></div> > <div id="k2w4" class="week selected"></div> > </div> > > <div id="kid3" class="kid"> > <div id="k3w1" class="week selected"></div> > <div id="k3w2" class="week"></div> > <div id="k3w3" class="week"></div> > <div id="k3w4" class="week"></div> > </div> > > <div id="kid4" class="kid"> > <div id="k4w1" class="week"></div> > <div id="k4w2" class="week selected"></div> > <div id="k4w3" class="week"></div> > <div id="k4w4" class="week"></div> > </div> > </div> > > Now I have changed #kid1 to have a class "select" instead of > "selected" and this code brings up the correct index for the div with > class "selected" in the first group of weeks (was there some kind of > conflict before because the parent had the class I was looking for?): > > var spoon = $("#container > div:eq(0) > div").index($(".selected")); > > If i change the :eq to (1) or (2) or (3) to theoretically grab hold of > the other 3 divs inside #container, it returns -1. > > Am I totally missing something with index?