本问题来自阿里云开发者社区的【11大垂直技术领域开发者社群】。 https://developer.aliyun.com/article/706511 点击链接欢迎加入感兴趣的技术领域群。
我想通过jquery,查找指定元素之后的,所有满足条件元素(包括兄弟节点、子节点和无关节点)。例如下面的代码中:
如何查找出id=b的span元素之后的所有span元素,并按顺序保存起来。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
要使用jQuery查找id为'b'的span元素之后的所有span元素(包括兄弟节点、子节点和无关节点),并且按顺序保存,可以采用深度优先搜索的方式遍历DOM树。这里有一个步骤可以实现你的需求:
首先定位到起始元素:通过$('#b')
获取id为'b'的span元素。
然后进行深度优先遍历:可以利用.nextAll()
来获取所有同级后续的span元素,用.find()
递归查找所有后代span元素,并将它们合并。
合并结果并排序:由于.nextAll()
和.find()
会分别返回满足条件的元素集合,你可以将这些集合合并,并考虑使用某种方式确保它们按照在DOM中的顺序排列。jQuery的集合操作本身是支持链式调用和自动排序的,但为了确保特定的顺序逻辑,可能需要额外处理。
下面是一个示例代码片段,它尝试实现你的需求:
var elements = $('#b'); // 获取起始元素
// 获取id=b之后的所有同级span元素
var nextSpans = elements.nextAll('span');
// 递归查找所有后代span元素
var childSpans = elements.find('span');
// 合并两个集合
var allSpans = $([]).add(nextSpans).add(childSpans);
// 这里假设jQuery的默认行为已经足够保证按DOM顺序,如果需要进一步排序,请自行实现排序逻辑
// 打印或处理找到的所有span元素
allSpans.each(function(index, element) {
console.log(element); // 或其他处理逻辑
});
请注意,这个方法会先找同级元素,再找后代元素,且jQuery的集合操作会保持元素的自然顺序(即文档顺序)。如果你有特别的排序需求(比如严格按出现顺序,即使涉及到跨层级),你可能需要手动实现更复杂的排序逻辑。