在 jQuery 中排除带有前缀的元素及其所有子元素

  • 本文关键字:元素 前缀 jQuery 排除 jquery
  • 更新时间 :
  • 英文 :

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>

最新更新