找到了一堆似乎不起作用的混合解决方案。我正在加载特定页面的HTML,并希望从已识别的DIV中提取HTML - 这很好,但是尝试从剩余的HTML中删除未识别的H3标记(并保留以下UL / LI)似乎是不可能的:我已经尝试了Google提供的所有功能,并且可以获得无结果,或者只获得H3标签的内容。我正在尝试获取UL列表的HTML,包括UL标签。
/* variable html is the result of an AJAX load of the web page of interest*/
/* I know the first line below is not correct */
/* but it demonstrates the chain of events that I'm trying to accomplish*/
var theStuffIWant = $(html).find("#tab-2").remove("h3").html();
<div id="tab-2">
<h3>Heading to get rid of</h3>
<ul>The list I want to keep
<li>List item to keep</li>
<li>List item to keep</li>
<li>List item to keep</li>
</ul>
</div>
答案 0 :(得分:4)
由于您只关注ul
,请跳过h3
并提取您想要的内容:
$('<div />').append($('#tab-2').find('ul')).html();
或
$('#tab-2').find('ul'); //to return them as a jQuery object.
答案 1 :(得分:1)
remove()
不能用于链接,因为它会返回已删除的元素。
所以你需要拆分:首先删除元素,然后检查div的html()
,它被所有h3
所占据。
修改强>
因此,首先通过包装所需的html(例如$(html)
)来创建一个新的Jquery对象。
正如@pete所说,不会插入DOM。 DOM是页面的内存中表示,可供Javascript访问,这意味着$(html)
将不会添加到页面结构表示中。
然后找到标题(使用children()),并替换为空。
我建议您阅读replaceWith(),以及返回旧对象的事实。这就是我放弃回报价值的原因。没有必要,html
无论如何都会在上面的代码中被更改。
此外,html.html()
会丢弃html
中的外部HTML元素,这是此示例中的DIV容器。
答案 2 :(得分:0)
获取该项目中所有H3的数组,然后循环并删除它们。
var eles = $("#tab-2").getElementsByTagName("h3");
for(var i in eles)
$("#tab-2").removeChild(eles[i]);
答案 3 :(得分:0)
我无法弄清楚如何评论之前的内容,但我建议完全使用JQuery的选择器:
$('#tab-2 h3').each(function(idx) {
$(this).remove();
}
代码未经测试但你得到了它的要点,我希望。