如何从DIV中删除特定标签?

时间:2012-02-11 01:42:25

标签: jquery find

找到了一堆似乎不起作用的混合解决方案。我正在加载特定页面的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>

4 个答案:

答案 0 :(得分:4)

由于您只关注ul,请跳过h3并提取您想要的内容:

$('<div />').append($('#tab-2').find('ul')).html();

$('#tab-2').find('ul'); //to return them as a jQuery object.

答案 1 :(得分:1)

请参阅http://jsfiddle.net/ewjBp/

remove()不能用于链接,因为它会返回已删除的元素。

所以你需要拆分:首先删除元素,然后检查div的html(),它被所有h3所占据。


修改

http://jsfiddle.net/ewjBp/5/

因此,首先通过包装所需的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();
}

代码未经测试但你得到了它的要点,我希望。