如何使用jQuery选择表格多个单独列并简化选择器?
简化jQuery选择器的几种方法
针对你现在的选择器,有几种实用的简化方式,能避免重复写相同的span:contains('something')部分:
方法一:合并父选择器,统一查找后代元素
把所有目标列的td选择器合并,再用.find()方法定位里面的span,重复部分只写一次:
$("table tr td:nth-child(2), table tr td:nth-child(7)").find("span:contains('something')")
也可以直接写成复合选择器,效果完全一致:
$("table tr td:nth-child(2), table tr td:nth-child(7) span:contains('something')")
这种方式适合列数不多的场景,写法简洁直观。
方法二:用数组生成选择器(适合多列场景)
如果需要选择的列数很多,把列号放到数组里,通过数组拼接生成完整选择器,后续维护只需要修改数组即可:
// 定义要选择的所有列号 const targetColumns = [2, 7, 9, 12]; // 拼接生成td部分的选择器 const tdSelector = targetColumns.map(col => `table tr td:nth-child(${col})`).join(', '); // 组合成最终选择器并执行查询 $(tdSelector + " span:contains('something')");
方法三:用filter方法动态筛选列
如果需要更灵活的列筛选逻辑(比如列号满足某个条件),可以先用选择器选中所有td,再用.filter()过滤出目标列,最后查找里面的span:
$("table tr td").filter((index) => { // index从0开始计数,+1对应nth-child的1起始规则 const targetCols = [2, 7]; return targetCols.includes(index + 1); }).find("span:contains('something')");
内容的提问来源于stack exchange,提问作者finefoot
相关产品推荐
相关产品推荐

