Что означает $ ('' class для того же элемента ', element)? - PullRequest
0 голосов
/ 25 июня 2011

Я не понимаю этот синтаксис:

var dir = $("a.store").parents("table")[0];
var stores = $("a.store:has(b)", dir);

Что будет store содержать?

Что означает "$("a.store:has(b)", dir);"?

Ответы [ 5 ]

3 голосов
/ 25 июня 2011

Он вернет коллекцию элементов dom, которые соответствуют селектору css ("a.store:has(b)"), которые являются дочерними элементами элемента dom, хранящегося в переменной 'dir'.

2 голосов
/ 25 июня 2011

В вашем примере dir - это контекст селектора. Из документов , на которые ссылается Феликс в своем комментарии:

По умолчанию селекторы выполняют поиск в DOM, начиная с корня документа. Однако альтернативный контекст может быть задан для поиска с помощью необязательного второго параметра функции $ (). Например, чтобы выполнить поиск в обработчике событий, поиск можно ограничить так:

$('div.foo').click(function() {
  $('span', this).addClass('bar');
});
1 голос
/ 25 июня 2011
$("a.store")

Получит все <a> элементы, имеющие класс .store

.parents("table")[0];

Получит таблицы, в которых находятся эти <a>.

$("a.store:has(b)", dir);

Найдет все элементы <a>, которые имеют класс .store и содержат элемент <b>, используя ранее найденные таблицы dir в качестве контекста, что означает, что вместо просмотра всего документа для поиска совпадений он будеттолько пройти через эти таблицы.

1 голос
/ 25 июня 2011

Из документов jquery

: has () Селектор

Выбирает элементы, которые содержат хотя бы один элемент, соответствующий указанному селектору.

Выражение$ ('div: has (p)') соответствует <div>, если среди его потомков существует <p>, а не просто как прямой потомок.

http://api.jquery.com/has-selector/

Относительно второго параметра jQuery, это контекст.Это может быть элемент DOM, с которым работает селектор.

В вашем случае: var dir будет иметь table, который является родительским для <a class="store" ...

, переменная store будет содержать только те<a class="store" .. с <b> внутри.

0 голосов
/ 25 июня 2011

В простейшем виде ..

Это эквивалентно действию ..

$('someParent').find('.matchingDescendants');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...