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>
推荐阅读
- sql - 在给定条件下评估连续日期
- qt - Ubuntu 上的 Qt 和 OpenSSL 不兼容版本
- vba - 从网页视图源中搜索特定文本并使用 VBA 宏复制完整的完整行
- python - 芹菜工人 ImportError:没有名为“项目”的模块
- c - 如何从 C 程序中使用 OCIServerVersion (Oracle)?
- r - 治疗前后测量的 Wilcox.test
- python - 如何将networkX图导入neo4j?
- apache-spark - 不允许 EMR Master SSH
- javascript - 通过某些表单验证来防止 ajax 调用
- php - PHP json_encode 既漂亮又非转义