Getting a range of elements in one jQuery selector

2020-02-12 02:16发布

My problem is that I have a table, but I only want a subset of the rows, from first index to last index. I thought you could do it like this:

$('table tr:gt(2):lt(5)');

I thought it would give you only rows #3 and #4 but it ends up giving you more than that. How can I tell the selector to choose only rows #3 and #4?

3条回答
来,给爷笑一个
2楼-- · 2020-02-12 02:46

How about $('table tr').slice(2, 4)

Since JavaScript arrays are 0 indexed, that will give you the third and fourth row of the table. Slice will still return a jQuery wrapped (sub)set, so it's the same end result.

查看更多
ら.Afraid
3楼-- · 2020-02-12 02:47

I reckon you've got it spot on, although I would imagine that jQuery will count from 0 in it's index of elements.

So would it be gt(1) and lt(4) ?

查看更多
虎瘦雄心在
4楼-- · 2020-02-12 02:50

You're pretty close, but the problem in your selector is the :lt(5) filter.

You would want something like:

$('table tr:gt(2):lt(2)');

The difference is that by the time the lt() filter is applied, the first three elements were already removed from the set (by the gt() filter). So this will grab the 3rd and 4th element (zero-indexed), instead of the 3rd through the 8th.

查看更多
登录 后发表回答