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

JQuery - селектор в строке html

Я собираюсь получить элемент из html-строки с jQuery, но всегда получаю undefined в моей консоли. Моя строка:

<td class="test">asd</td><td class="second">fgh</td><td class="last">jkl</td>

и я хочу получить td.test.

Я тестировал:

console.log($('.test', '<td class="test">asd</td><td class="second">fgh</td><td class="last">jkl</td>').innerHTML);
console.log($('.test', '<td class="test">asd</td><td class="second">fgh</td><td class="last">jkl</td>').html());
console.log($('.test', '<td class="test">asd</td><td class="second">fgh</td><td class="last">jkl</td>').first().innerHTML);

и еще несколько, но ничего не работает:/

Кто-нибудь знает решение моей проблемы?

4b9b3361

Ответ 1

Сначала используйте jQuery.parseHTML для синтаксического анализа HTML-массива элементов; то вы сможете преобразовать его в коллекцию jQuery и использовать filter для ограничения коллекции элементами, соответствующими селектору.

var html =
    '<td class="test">asd</td>' +
    '<td class="second">fgh</td>' +
    '<td class="last">jkl</td>';

var text = $($.parseHTML(html)).filter('.test').text();

console.log(text);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

Ответ 2

Try:

console.log($('<td class="test">asd</td><td class="second">fgh</td><td class="last">jkl</td>').filter('.test').html());

или

console.log($('.test', '<table><td class="test">asd</td><td class="second">fgh</td><td class="last">jkl</td></table>').html());

Ответ 3

У меня есть ответ, который имеет форму:

<div>...
</div>

<div>...
</div>

<div>...
</div>

И метод @minitech привел к массиву узлов HTML, в которых селектор не работал.

Итак, я пробовал это, и это получилось приятным:

$.ajax({
    url:
    success: function($data) {
         var $parsed_data = $('<div/>').append($data);
         var found = $parsed_data.find(".Selector");
         ...
    }
});