如何定位#showdata按钮后的首个.confluenceTable并读取首列数据?
解决jQuery选择#showdata按钮后首个表格第一列的问题
嘿,我来帮你搞定这个问题!你遇到的核心问题是选择器的层级逻辑错了——nextAll()方法只会查找目标元素的同级后续元素,但你直接把tr:gt(0) td:nth-child(1)拼在.confluenceTable后面,相当于在找#showdata的同级元素里有没有tr,这显然不成立,因为tr是.confluenceTable的子元素,不是同级节点。
正确的写法应该分两步走:
- 先定位到
#showdata之后的第一个.confluenceTable(同级元素) - 再在这个表格内部查找目标单元格
完整代码如下:
let projects_list = []; $("#showdata").nextAll(".confluenceTable").first() .find("tr:gt(0) td:nth-child(1)") .each(function() { projects_list.push($(this).text().trim()); });
代码逻辑拆解:
$("#showdata").nextAll(".confluenceTable"):找到#showdata按钮之后所有同级的.confluenceTable表格元素.first():筛选出其中的第一个表格(也就是你需要的“首个”目标表格).find("tr:gt(0) td:nth-child(1)"):在这个表格内部,查找跳过第一行(表头行)的所有数据行,再取每行的第一列单元格- 后续的
each循环逻辑和你原来的代码一致,把单元格文本去空格后存入数组
额外小技巧:
如果#showdata按钮和目标表格是紧挨着的同级元素(中间没有其他元素),也可以用更简洁的next()方法代替nextAll().first():
$("#showdata").next(".confluenceTable") .find("tr:gt(0) td:nth-child(1)") .each(function() { projects_list.push($(this).text().trim()); });
内容的提问来源于stack exchange,提问作者LA_
相关产品推荐
相关产品推荐

