删除所有不具有特定属性的元素

时间:2012-07-28 11:50:03

标签: javascript jquery html

我有一个小文档,其中每个标记都有一个像

这样的属性

keep="true"

如何遍历整个<body></body>并删除没有此属性集的这些标记的整个innerHTML(也将其自身删除)。

如果可能,我更愿意使用jQuery。

2 个答案:

答案 0 :(得分:2)

您可以将:not()选择器与Attribute Equals选择器结合使用:

$(":not([keep='true'])").remove();

或者甚至可能是一个简单的Has Attribute选择器,具体取决于您的标记语义:

$(":not([keep])").remove();

修改:如果您想删除匹配的元素但保留其内容,可以将children()链接到unwrap()而不是:

$(":not([keep])").children().unwrap();

答案 1 :(得分:1)

keep不是有效的属性,您可以使用data-*属性并尝试:

$('*:not([data-keep="true"])').empty()

$('div:not([data-keep="true"])').empty()