Eric
Eric

Reputation: 97661

Is there such thing as a relative jQuery selector?

I have a reference to a jquery object with the this variable. I am looking for a way of applying the child selector to the object.

I'm using $(this).find('table > tbody > tr > td'), but what I'm aiming for is something more like $('[Value of $(this) goes here somehow] > table > tbody > tr > td').

I realise that I can do $(this).children('table').children('tbody').children('tr').children('td'), but I was wondering if there was some syntactic sugar I could use here.

Upvotes: 15

Views: 10270

Answers (3)

Igor G.
Igor G.

Reputation: 7019

An alternative way would be passing a second parameter $('selector', context), which defines a context for search.

By default, selectors perform their searches within the DOM starting at the document root. However, an alternate context can be given for the search by using the optional second parameter to the $() function.

$( "div.foo" ).click(function() {
    $( "span", this ).addClass( "bar" );
});

Upvotes: 8

Andy E
Andy E

Reputation: 344713

As Nick said, you can use find(), or you can use selector context:

$('> table > tbody > tr > td', this)

// Is the equivalent of
$(this).find('> table > tbody > tr > td')

Upvotes: 8

Nick Craver
Nick Craver

Reputation: 630597

You can start with a child selector (>) when using .find() as well, like this:

$(this).find('> table > tbody > tr > td')

It's an often overlooked use case, but it works just great for what you're after.

Upvotes: 29

Related Questions