Use find()? The children() function (should) return "unique immediate children" which won't get you your second level divs in a single call from the #obj level, no matter what selector you use.
eg... var obj = $("#obj"); obj.find(">.obj_level1>.obj_level2").attr( "id", "Bob" ); On Jan 15, 6:03 am, Mark Lacas <[EMAIL PROTECTED]> wrote: > I'm trying to set the id of a 2nd level obj selected by class and it > doesn't seem to work as I thought it would. > > Unfortunately all of the level one objects get the id assignment, not > the level two object. > > Here it is before I do the operation: > > <div id="obj"> > <div class="obj_level1"> > <div class="obj_level2"></div> > </div> > <div class="obj_level1.1"></div> > </div> > > Then I do this: > > var obj = $("#obj"); > //bunch of code > obj.children(".obj_level1 > .obj_level2").attr( "id", "Bob" ); > > It ends up like this: > > <div id="obj"> > <div id="Bob" class="obj_level1"> > <div class="obj_level2"></div> > </div> > <div id="Bob" class="obj_level1.1"></div> > </div> > > Note the two divs with the same id. . . > > Do I have to use: > > obj.children(".obj_level1").children(".obj_level2").attr( "id", > "Bob" ); > > Originally I was using: > > $("#obj > .obj_level1 > .obj_level2").attr( "id", "Bob" ); > > And that worked ok, but I needed the object in a variable as I and > using it repeatedly and didn't want to dereference it every time I use > it, for speed's sake. > > Any thoughts as to the correct syntax to do this? > > Thanks, > ml