@IceJOKER
Web/Android developer

JQuery selector — пропускает первый элемент, как исправить?

Никак не могу понять в чем причина, беру к примеру исходник главной страницы toster.ru, далее пытаюсь вывести все div:
var find = html.find('div'); //html - исходный код
if(!find.length) return;
find.each(function(index, el){
				//тут идет вывод
			});


Но почему-то не выводятся первые div-ы после body , к примеру у toster-а первым выводит - div#js-canvas, пропуская родительский div
3005dc7d70.jpg

И с помощью find невозможно добраться до head>title , поэтому для этого перешел на filter() - справляется с выводом title, также родительский элемент div, но вложенные элементы не видит.

Растолкуйте пожалуйста почему так.
  • Вопрос задан
  • 2584 просмотра
Решения вопроса 1
@IceJOKER Автор вопроса
Web/Android developer
Помогли на stackoverflow.com/questions/28110073/jquery-findfi...

И решение:
var find = $('<div />').html(output).find(selector);


Все работает отлично )) спасибо тому чуваку, который ответил, а потом по какой-то причине удалил свой ответ.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
nalomenko
@nalomenko
Руководитель отдела разработок в студии «Lava»
Попробуйте такой код:
var find = $('div');

Тест в консоли по коду ниже на «тостере» вывел все div'ы (перед #js-canvas два undefined)
$('div').each(function(index, el){ console.log($(el).attr('id')) });
Ответ написан
standy
@standy
Как написано в документации, find ищет потомков у каждого элемента в списке.

В вашем случае похоже что переменная html ссылается на layout. Чтобы включить всех потомков и сам элемент, то правильно было бы написать так:

html.add(html.find('div')).each(function() {...})
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы