jQuery("body *:not([id|='keep'])").removeAttr('id');
将定位页面上除前缀以keep
开头并移除其 id 属性之外的所有元素。
现在,我不仅尝试在排除列表中包含前缀元素,还尝试将其子元素包含在排除列表中。
类似于以下内容(不起作用(:
jQuery("body *:not([id|='keep']), body *:not([id|='keep']).find('*')").removeAttr('id');
有什么想法吗?
您可以按集合中的每个元素是否具有与[id|='keep']
匹配的祖先来筛选该元素。您还可以在初始选择器中放置[id]
以仅选择具有 ID 的元素:
jQuery("body [id]:not([id|='keep'])")
.filter(function() { return !this.closest('[id|="keep"]') })
.removeAttr('id');
jQuery("body [id]:not([id|='keep'])")
.filter(function() { return !this.closest('[id|="keep"]') })
.removeAttr('id');
console.log(document.body.innerHTML);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="keep">
<div id="child">child</div>
</div>
<div id="keep-2">keep-2</div>
<div id="somethingelse">somethingelse</div>