使用jQuery统计父级tracker下的直接子div数量,计数错误如何解决?
问题原因
你的原有代码逻辑存在偏差:$(this).parents(".tracker > div.item")的作用是查找当前点击元素的所有祖先节点中,符合「是.tracker直接子元素的div.item」的节点。每个点击元素的祖先节点里,只有它自身所在的那1个item符合这个筛选规则,所以运行后永远返回1。
修正后代码
$(document).on("click", ".connect", function(ev) { // 定位当前点击元素所属的.tracker父容器 const currentTracker = $(this).closest(".tracker"); // 统计该.tracker下直接子div.item的数量 console.log(currentTracker.children("div.item").length); });
实现逻辑说明
closest(".tracker")方法会从当前点击元素开始向上查找,直到找到第一个匹配.tracker类的父节点,保证定位到正确的所属容器children("div.item")只会筛选目标.tracker的第一级子元素,不会匹配到嵌套在item内部的其他div,统计结果完全符合需求:点击Click1/2/3返回3,点击Click4/5返回2
内容的提问来源于stack exchange,提问作者Jay
相关产品推荐
相关产品推荐

