jQuery: .filter () возвращает меньше элементов, чем ожидалось? - PullRequest
2 голосов
/ 10 мая 2011

Я использую PHP и команду ajax для получения всего содержимого HTML внешней веб-страницы (с помощью команды PHP file_get_contents()) и передаю этот HTML-код в переменную javascript.С содержанием HTML в этой переменной, я сейчас пытаюсь выбрать и извлечь определенные элементы в этой переменной.Я пытался использовать функцию .filter(), например,

 $(myHTML).filter('#someID').doStuff();

, но команда .filter(), похоже, не точно фильтрует мой выбор.

В некоторых случаях работает

$(myHTML).filter('title').text();

, но при попытке выбрать несколько элементов он не работает.Например, если я пытаюсь получить счетчик всех тегов <div> или <a>, я продолжаю получать ноль

alert($(myHTML).filter('a').length)

, хотя в этом примере есть 75 <a> тегов.

То же самое происходит при попытке подсчета всех тегов <div>: приведенный выше код просто возвращает ноль.

Может кто-нибудь объяснить, почему это происходит, и что я могу сделать, чтобы решитьвопрос?

1 Ответ

5 голосов
/ 10 мая 2011

Фильтр возвращает только отфильтрованные элементы верхнего уровня, не пересекает дочерние элементы.Вместо этого используйте find ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...