javascript - 按类型或类而不是索引获取子节点
问题描述
我正在尝试使用 JS 或 jQuery 从 DOM 获取特定的子节点。我想出了如何获取包含该节点的 NodeList,但文档仅指定可以通过索引访问节点。这似乎有风险,因为我不能保证他们的订单。
$(".axis")[0].childNodes()
返回以下NodeList [...]
0: <g class="tick" style="opacity: 1;" transform="translate(0,319.94835680751174)">
1: <g class="tick" style="opacity: 1;" transform="translate(0,237.31924882629104)">
2: <path class="domain" d="M0,1H0V353H0" style="fill: none; stroke: rgb(34, 34, 34); shape-rendering: crispedges;">
3: <text>
length: 4
我怀疑遍历每个节点并检查其HTML
类或类型是最好的方法。我试过$(".axis")[0].childNodes.getElementsByClass("domain")
了,但这又回来了TypeError: $(...)[0].childNodes.getElementsByClass is not a function.
它们是按类型或类访问它们的更直接的方式吗?
解决方案
jQuery 中有两个方法find()和children()方法。
它们都返回与父节点的后代选择器匹配的元素,但是children()
只会搜索第一级后代子节点,而find()
将遍历所有子节点 - 显然children()
是更快执行时间的首选方法。
一个例子
$('#parent').find('.foo').addClass('bar');
将类添加到具有类名bar
的元素中的每个元素#parent
foo
然而
$('#parent').children('.foo').addClass('bar');
只会.foo
从这个 DOM 结构返回最外层的元素:
<div id="parent">
<p class="foo"></p>
<div>
<p class="foo"></p>
</div>
</div>
推荐阅读
- javascript - 根据循环增量数计算 Number
- mysql - A sql query to fetch data of both table even if related id is not available
- node.js - 在 Sequelize 模型中使用对象作为列包装器
- vba - VBA 字典,需要类 424 对象错误
- html-framework-7 - Framework7 向 html 传递数据
- c# - 从 C# 中从数组中返回奇数的函数返回的行尾删除逗号
- ruby-on-rails - 当我有两个多对多关联时,如何设置我的控制器和视图?
- angular - Custom filter in server driven datagrid submits component instead of expected value
- powershell - powershell 消息依赖于多个数组匹配
- django - 使用 django-auth-ldap 绑定到 Active Directory