简体   繁体   中英

Comma separated list of selectors?

I'm refactoring some code at the moment and have come across a selector:

jQuery("tr","#ctl00_MainContent_MyUserControl").each(function(i,row) { ... }

It looks like it's selecting <tr> 's from the user control on the page (ignore the fact that the instance is fully named!) but it's not a syntax I'm familiar with and can't find anything in the documentation. I'd expect it to be written:

$("#ctl00_MainContent_MyUserControl tr").each(function(i,row) { ... }

Can anyone tell me if there's a difference (subtle or otherwise) that I'm missing here??

This selector selects all tr elements inside an element with id ctl00_MainContent_MyUserControl . It is exactly the same as your second example.

The second parameter provides a context for the first parameter. There are better use cases for this syntax, for example:

function(el) {
    $('tr', el).each(...);
}

Where el is some element on your page. In this case, you can't use the second syntax form.

Calling the jQuery() method with two arguments ( selector and context ) is equivalent to jQuery(context).find(selector) . Thus:

jQuery("tr","#ctl00_MainContent_MyUserControl");

is equal to:

jQuery("#ctl00_MainContent_MyUserControl").find("tr");

which also happens to be the same as:

jQuery("#ctl00_MainContent_MyUserControl tr");

My personal opinion is that the use of context only makes sense when you can pass an already selected element ( jQuery or DOM ), not so much when you just pass a selector ( String ). In that case I simply prefer to mimic the CSS selector: eg, #ctl00_MainContent_MyUserControl tr .

It's exactly the same. It could also have been written:

$("#ctl00_MainContent_MyUserControl").find("tr").each(function(i,row) { ... }

The syntax for the former can be seen in the jQuery constructor documentation . It's basically "find all elements that matches the first selector, that's a descendant of the second matched by the second".

The second argument to the jQuery constructor (when the first is a selector) is the context .

From the API docs

context A DOM Element, Document, or jQuery to use as context

See http://api.jquery.com/jQuery/

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM