在 jQuery 中查询元素的字符串


Querying a string for an element in jQuery

我有一个ajax请求,POST的文本到另一个PHP页面,该页面将其呈现为markdown并将其发送回去。示例如下所示:

"<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);
});