提问人:finefoot 提问时间:5/20/2023 更新时间:5/20/2023 访问量:55
如何使用jQuery选择多个单独的表列?
How to select multiple individual table columns with jQuery?
问:
目前,我用于选择第 2 列和第 7 列的 jQuery 选择器是:
$("table tr td:nth-child(2) span:contains('something'), table tr td:nth-child(7) span:contains('something')")
有没有办法缩短这个时间?如果我想选择更多的列,它肯定会变得更长,并且(甚至可能变得更长)只是不断重复。span:contains('something')
答:
0赞
Alexander Nenashev
5/20/2023
#1
你总是可以编写一些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>
评论
0赞
Alexander Nenashev
5/20/2023
@finefoot我没有找到任何方法来选择带有 .也许我们需要一些CSS专家。我会按照我提议的方式去做。developer.mozilla.org/en-US/docs/Web/CSS/:nth-child:nth-child
0赞
Roko C. Buljan
5/20/2023
@finefoot没有这样的事情——如果这就是你所希望的。td:nth-child(2,3,5)
0赞
finefoot
5/25/2023
@RokoC.Buljan:是的,这正是我所希望的。;)就像我在上面的评论中写的那样(在问题本身下)。所以我理解你的评论意味着没有选择器可以轻松做到这一点。那么,像这个答案建议的那样做,这不是一个好的选择吗?有什么替代方案?
0赞
Alexander Nenashev
5/25/2023
@finefoot我认为你的问题和我的回答完全没问题。没有CSS选择器来选择单个列索引,所以我的解决方案是可以的。我现在没有看到更好的选择。当然,你不能把它写成一个jQuery插件函数,而只是一个独立的函数,第一个参数是jQuery表对象。再说一次,如果你对我的解决方案感到满意,我会请你投票并接受我的答案,这样我将来就会有动力支持你,谢谢
0赞
finefoot
5/25/2023
@silentmantra 谢谢你的回答,我已经投了赞成票。这很有帮助,所以它得到了我的赞成。然而,引用SO帮助的话:“你可以接受你认为是解决你问题的最佳答案”,我还不相信这是我问题的最佳解决方案。就这样。:)
评论
tr nth-child(2,7) span
tr nth-child(2)|nth-child(7) span