10

我有以下 HTML:

<!--
<option value="HVAC">HVAC</option>
<option value="Cooling">|---Cooling</option>
<option value="Heating">|---Heating</option>
-->
....

我使用 jQuery 的 get 方法动态获取这个文件,并将它存储在一个名为load_types.

如何去除 HTML 注释标签以及它们之外的所有内容?我只想要里面的 HTML:

<option value="HVAC">HVAC</option>
<option value="Cooling">|---Cooling</option>
<option value="Heating">|---Heating</option>

我尝试在这里使用解决方案,但没有任何效果 - 我只是null匹配。

谢谢您的帮助!

4

2 回答 2

16

永远不要使用正则表达式来解析 HTML。您可以改用以下内容:

var div = $("<div>").html(load_types),
    comment = div.contents().filter(function() {
        return this.nodeType === 8;
    }).get(0);

console.log(comment.nodeValue);

演示:http: //jsfiddle.net/HHtW7/

于 2013-05-25T20:14:18.297 回答
0

您可以简单地获取注释所在的父标记的 html 并执行 a .replace("<!--","").replace("-->", ""),这将简单地删除注释标记,然后将此标记附加到其他父标记或替换您当前的标记或为其创建新的父标记并附加它。

这将允许您使用 jQuery 选择器来检索所需的数据。

var comment = '<!-- <option value="HVAC">HVAC</option> <option value="Cooling">|---Cooling</option> <option value="Heating">|---Heating</option> --> ';

jQuery("#juni").append("<select>"+comment.replace("<!--", "").replace("-->", "") + "</select>")
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="juni"></div>

于 2020-09-30T12:21:21.817 回答