Javascript 删除所有不具有特定属性的元素
我有一个小文档,其中每个标记都有一个属性,如Javascript 删除所有不具有特定属性的元素,javascript,jquery,html,Javascript,Jquery,Html,我有一个小文档,其中每个标记都有一个属性,如 keep=“true” 如何遍历整个并删除这些未设置此属性的标记的整个innerHTML(也删除它们本身) 如果可能的话,我更喜欢使用jQuery。您可以将选择器与选择器结合使用: $(":not([keep='true'])").remove(); 或者甚至是一个简单的选择器,具体取决于您的标记语义: $(":not([keep])").remove(); 编辑:如果要删除匹配的元素但保留其内容,可以链接到: keep不是有效的属性,您可以使用
keep=“true”
如何遍历整个
并删除这些未设置此属性的标记的整个innerHTML(也删除它们本身)
如果可能的话,我更喜欢使用jQuery。您可以将选择器与选择器结合使用:
$(":not([keep='true'])").remove();
或者甚至是一个简单的选择器,具体取决于您的标记语义:
$(":not([keep])").remove();
编辑:如果要删除匹配的元素但保留其内容,可以链接到:
keep
不是有效的属性,您可以使用data-*
属性并尝试:
$('*:not([data-keep="true"])').empty()
谢谢,非常有帮助。我是否可以为例如a
设置keep=“true”
,并跳过它的子对象(与父对象一起保存)?@user,是的,您必须使用children().unwrap()
而不是remove()
来执行此操作。我的意思是-如果父对象设置了属性,是否可以保留子对象,即使那些孩子没有它?@user,那要看情况了。您的[keep]
元素是否都是同一祖先下的同级兄弟?(你真的应该在你的问题中提到这些要求。)几乎每个div都不一样。有些有简单的文本内容,有些包含多级结构。。。保留所有具有属性的父项、其所有子项以及其子项的子项等将是完美的。我是否可以为例如a设置数据keep=“true”并跳过其子项(与父项一起保留)?是的,您可以选择div标记,这也比使用通用选择器更快,尝试更新后的答案。我的意思是-如果孩子的父母设置了属性,即使他们没有设置属性,也可以保留孩子吗?@user1559555是的,我理解,更新后的答案会保留具有data keep=“true”
属性的div标签的孩子,并删除那些没有属性的孩子。
$('*:not([data-keep="true"])').empty()
$('div:not([data-keep="true"])').empty()