Найти элемент в строке HTML
Давайте предположим, что у меня есть
var testHTML = "<div id='demo_div'></div>";
Я хочу получить выше div как объект JQuery, чтобы манипулировать им. Я пытаюсь найти это с:
var found = $(testHTML).find("#demo_div");
и с:
var found = $(testHTML).find("div");
Оба без везения. Я нашел пустую переменную. Что я делаю не так?
PS Да, я знаю, что могу иметь прямой доступ к своему div с
$("#demo_div")
но я не могу сделать это в моем случае - мне нужно получить его из простого HTML, который будет присвоен некоторой переменной, как в моем примере с testHTML var.
ОБНОВЛЕНИЕ: Даже если у меня нет корневого элемента div, как здесь:
var testHTML = "<html><div id='demo_div'></div></html>";
Я не могу использовать find для навигации по элементу div.
2 ответа
Проблема в том, что ваш div
является корневым элементом в коллекции, поэтому вам нужно использовать .filter()
вместо .find()
(который смотрит только на элементы-потомки):
var found = $(testHTML).filter("#demo_div");
Я предполагаю, что ваша фактическая HTML-строка является более сложной, чем та, что в вопросе, в противном случае вам не нужно ничего делать, кроме $(testHTML)
и у вас будет объект jQuery, содержащий этот единственный элемент.
Вы могли бы использовать .search()
функция самого javascript.
testHTML.search('demo_div')>-1