获取HTML评论标记内的文字?

时间:2013-05-25 19:57:45

标签: javascript jquery

我有以下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>

我尝试使用the solutions here但没有正常工作 - 我只是将null作为匹配。

感谢您的帮助!

2 个答案:

答案 0 :(得分:15)

never use regex to parse HTML。您可以改用以下内容:

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

console.log(comment.nodeValue);

DEMO: http://jsfiddle.net/HHtW7/

答案 1 :(得分:0)

您可以简单地获取注释所在的父标记的html,然后执行.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>