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

Каков новый правильный способ использования дочернего селектора с контекстом node в jQuery?

В документация jQuery для селектора дочерних элементов Я увидел эту заметку:

Примечание. Селектор $("> elem", context) будет устаревшим в будущей версии. Его использование, таким образом, обескураживается вместо использования альтернативных селекторов.

Я использую этот шаблон все время, обычно так:

$nodes.find('> children[something=morecomplicated] > somethingelse');

Однако я не понимаю, к чему могут относиться "альтернативные селекторы". Каков правильный способ записи селектора, который пересекает непосредственные дочерние объекты контекста node? Как бонус, может ли кто-нибудь объяснить, почему это обесценивается? Все альтернативы, которые все дают, кажутся удивительно уродливыми.

Вот некоторые вещи, которые не работают:

// does not guarantee that '.child' is an immediate child
$nodes.find('.child > .grandchild');

// this will return empty array in recent jQuery
// and will return full list of children in older jQuery
$nodes.children('.child > .grandchild');

// Anything like this which forces you to split up the selector.
// This is ugly and inconsistent with usual selector ease-of-use,
// and is a non-trivial conversion for long or complex selectors.
$nodes.children('.child').children('.grandchild');
// After all, no one would ever recommend
$nodes.find('.this').children('.that');
// instead of
$nodes.find('.this > .that');
4b9b3361

Ответ 1

Причина, по которой они говорят:

Примечание. Селектор $("> elem", context) будет устаревшим в будущей версии. Его использование, таким образом, обескураживается вместо использования альтернативных селекторов.

Является результатом запятой, за которой следует контекст в селекторе. Например. $("> elem") отлично, однако $("> elem", context) будет устаревшим.

$("> elem", context) совпадает с $(context + "> elem").

Правильный способ получения детей и внуков -

$("elem").children('.child').children('.grandchild');

или

context.children('.child').children('.grandchild');

или

context.find('> .child > .grandchild');