Подтвердить что ты не робот

Список разделенных запятыми селекторов?

Я пересматриваю код в данный момент и натолкнулся на селектор:

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

Похоже, что он выбирает <tr> из пользовательского элемента управления на странице (игнорируйте тот факт, что экземпляр полностью назван!), но это не синтаксис, с которым я знаком, и не могу найти что-либо в документации. Я ожидаю, что это будет написано:

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

Может ли кто-нибудь сказать мне, есть ли разница (тонкая или нет), которую я здесь отсутствует?

4b9b3361

Ответ 1

Этот селектор выбирает все элементы tr внутри элемента с id ctl00_MainContent_MyUserControl. Это точно так же, как и ваш второй пример.

Второй параметр предоставляет контекст для первого параметра. Для этого синтаксиса предпочтительнее использовать, например:

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

Где el - это какой-то элемент вашей страницы. В этом случае вы не можете использовать вторую синтаксическую форму.

Ответ 2

Вызов метода jQuery() с двумя аргументами (selector и context) эквивалентен jQuery(context).find(selector). Таким образом:

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

равно:

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

который также оказывается таким же, как:

jQuery("#ctl00_MainContent_MyUserControl tr");

Мое личное мнение заключается в том, что использование context имеет смысл только тогда, когда вы можете передать уже выбранный элемент (jQuery или DOM), а не столько, когда вы просто передаете селектор (String). В этом случае я просто предпочитаю имитировать селектор CSS: например, #ctl00_MainContent_MyUserControl tr.

Ответ 3

Это точно так же. Это также можно было бы написать:

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

Синтаксис для первого можно увидеть в документации конструктора jQuery. Он в основном "находит все элементы, которые соответствуют первому селектору, что потомком второго соответствует второй".

Ответ 4

Второй аргумент конструктору jQuery (когда первый является селектором) - это контекст.

В документах API

контекст Элемент DOM, документ или jQuery для использования в качестве контекста

См. http://api.jquery.com/jQuery/