Вопрос:

jQuery: find () не возвращает элемент, даже если элемент присутствует

javascript jquery

13 просмотра

1 ответ

337 Репутация автора

У меня есть скрипт, где я преобразую HTML другой страницы в объект jQuery. Затем мне нужно найти определенные элементы на этой странице и передать их значения другим функциям. Однако, когда я пытаюсь использовать find для извлечения элементов в верхней части DOM, jQuery не находит их.

html = $(`
<title>This is driving me insane</title>
Take a look at these elements:
<div id="aaa">
    I will never let you find me
    <div id="sss">However I will let you find me</div>
</div>
`);

//console.dir(html);
/*
jQuery.fn.init(3)
> 0: title
> 1: text
> 2: div#aaa
length: 3
*/

console.log(html.find('#aaa').length);
// returns: 0, expected: 1

console.log(html.find('#sss').length);
// returns: 1, expected: 1
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

JQuery может найти, #sssно не может #aaa.

Почему jQuery не может найти мой элемент? Как я могу найти свой элемент с помощью jQuery?

Автор: Bone Jones Источник Размещён: 11.08.2019 07:23

Ответы (1)


0 плюса

123973 Репутация автора

Описание .find является следующим :

Получите потомков каждого элемента в текущем наборе соответствующих элементов, отфильтрованных селектором, объектом jQuery или элементом.

Ваш #aaaэлемент не является потомком в текущем наборе соответствующих элементов - это элемент верхнего уровня в текущем наборе соответствующих элементов. Если элемент, который вы хотите найти, находится на верхнем уровне, используйте filterвместо этого:

html = $(`
<title>This is driving me insane</title>
Take a look at these elements:
<div id="aaa">
    I will never let you find me
    <div id="sss">However I will let you find me</div>
</div>
`);
console.log(html.filter('#aaa').length);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

Автор: CertainPerformance Размещён: 11.08.2019 07:28
Вопросы из категории :
32x32