Список разделенных запятыми селекторов?
Я пересматриваю код в данный момент и натолкнулся на селектор:
jQuery("tr","#ctl00_MainContent_MyUserControl").each(function(i,row) { ... }
Похоже, что он выбирает <tr>
из пользовательского элемента управления на странице (игнорируйте тот факт, что экземпляр полностью назван!), но это не синтаксис, с которым я знаком, и не могу найти что-либо в документации. Я ожидаю, что это будет написано:
$("#ctl00_MainContent_MyUserControl tr").each(function(i,row) { ... }
Может ли кто-нибудь сказать мне, есть ли разница (тонкая или нет), которую я здесь отсутствует?
Ответы
Ответ 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/