目前,我用于选择第 2 列和第 7 列的 jQuery 选择器是:
$("table tr td:nth-child(2) span:contains('something'), table tr td:nth-child(7) span:contains('something')")
有没有办法缩短这个?如果我想选择更多的列并且
span:contains('something')
(甚至可能变得更长)它肯定会变得更长,只是不断重复自己。
你总是可以写一些 jQuery 辅助函数:
jQuery.fn.tableColumnChildren = function(columnIndices, selector){
const query = columnIndices.map(idx => `tr td:nth-child(${idx + 1}) ${selector}`).join(', ');
return this.find(query);
};
const children = $('table').tableColumnChildren([0, 1], 'span:contains(something)');
console.log(children);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table>
<tr><td>test</td><td><span>something</span></td><td>more</td><tr>
<tr><td><span>something</span></td><td>cell test</td><td>data</td><tr>
</table>