javascript - JQuery find() 可以选择忽略特定标签及其子标签

标签 javascript jquery

我需要一个 jQuery 函数,在搜索时根据其属性忽略(过滤掉)特定标签及其所有(孙)子标签。 更具体地说:我想找到具有属性 data-type="a"的标签,但前提是它的(祖) parent 之一没有属性 data-type="b"。 我想这不存在,我应该编写自己的 javascript 代码来搜索。我倾向于这样做,但我读到这很容易出错并且与浏览器不兼容?

最佳答案

jQuery 提供了一种名为 .grep() 的方法来完成此类操作(请参阅 docs )

var aTypes = $('[data-type="a"]')

aTypes = $.grep(aTypes, function(el, i) {
  return $(el).parents('[data-type="b"]').length === 0
})

console.log(aTypes)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div data-type="a"></div>
<div data-type="a">
  <div data-type="b"></div>
</div>
<div data-type="b"></div>
<div data-type="b">
 <div data-type="a">Ignore Me</div>
</div>
<div data-type="a">
  <div data-type="a"></div>
</div>

关于javascript - JQuery find() 可以选择忽略特定标签及其子标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43718751/

相关文章:

Javascript 条件在 HTML 中搜索字符串并返回 True

javascript - 如何正确地将 jQuery 插件导入 Node.JS?

javascript - 每次都可以分离内容、表示和行为吗?

javascript - 在 1 页而不是 2 页中添加编辑功能

javascript动态按钮点击事件

javascript - 这段代码有什么问题,尝试点击菜单吗?

javascript - 如何获取 html 和 php 之间的 json 值?

javascript - jquery ajax发送form.serialize,变量和数组全部作为数据

javascript - Jquery:使用这个内部类内部函数,作为处理程序

javascript - Sequelize 更新或创建包含的关联