У меня есть запрос AJAX, что POST
s текст на другую страницу PHP, которая переводит его в уценку и отправляет обратно. Пример выглядит так:
"<p>Meep, meep, <em>meep!!!</em></p>
<pre><code class="language-javascript">var foo = "bar";</code></pre>"
Теперь, если бы я хотел найти все элементы с помощью селектора pre code
как бы я это сделал? Я старался $(text).find("pre code")
но без результатов. В чем проблема и как это правильно сделать?
Ты можешь использовать .parseHTML()
как это
$('<output>').append($.parseHTML(str)).find('pre code')
var str = '<p>Meep, meep, <em>meep!!!</em></p>\
<pre><code class="language-javascript">var foo = "bar"\
;</code></pre>';
alert($('<output>').append($.parseHTML(str)).find('pre code').html());
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
Оказывается, ответ был .filter()
,
Текст, использованный в исходном вопросе, представлен как корневая область для jQuery, поэтому .filter()
должен быть использован — он возвращает список всех отфильтрованных элементов. На что мне пришлось использовать .find()
и получил желаемый результат.
Мне нужно было бежать hightlight.js
по возвращенному выводу вот как это выглядит:
$html = $(data);
$html.filter("pre").find("code").each(function(i, block) {
hljs.highlightBlock(block);
});