2009-12-23 1 views
12

Моя проблема в том, что у меня есть таблица, но я хочу только подмножество строк, от первого индекса до последнего индекса. Я думал, что вы могли бы сделать это следующим образом:Получение диапазона элементов в одном селекторе jQuery

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

Я думал, что это даст вам только те строки, # 3 и # 4, но он заканчивает тем, что дает вам больше, чем это. Как я могу сказать селектору выбрать только строки № 3 и № 4?

+0

См. Также [.slice()] (http://api.jquery.com/slice/) –

ответ

19

Вы довольно близко, но проблема в вашем селекторе - фильтр :lt(5).

Вы хотели бы что-то вроде:

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

Разница заключается в том, что к тому времени, применяется lt() фильтр, первые три элемента уже были удалены из набора (по gt() фильтра). Таким образом, это захватит 3-й и 4-й элементы (с нулевой индексацией), а не с 3-го по 8-й.

+0

Отлично! Это работает так, как ожидалось. Спасибо, что разъяснил это. – Bob

+0

Я полагаю, что в качестве побочного вопроса, где я могу отправить запрос функции, чтобы добавить селектор диапазона, чтобы он выглядел примерно так: $ ('table tr: in (2,4)') или есть плагин что уже выполняет такие функции? – Bob

+1

@Bob вы должны действительно изучить использование 'slice', как ответил @DaveWard. он намного читабельнее и будет работать так, как вы ожидаете. Кроме того, вы не получаете каких-либо выигрышей в производительности, делая это таким образом, он все равно находит все «таблицы tr», а затем фильтрует этот список вниз. –

0

Я считаю, что у вас есть это место, хотя я бы предположил, что jQuery будет рассчитывать от 0 в его индексе элементов.

Так будет ли это gt (1) и lt (4)?

+0

Правильно, это от нулевого индекса. Виноват. – Bob

10

Как насчет $ («таблицы т.р.»). Ломтик (2, 4)

Поскольку JavaScript массивы 0 индексируется, что даст вам третью и четвертую строку таблицы. Slice все равно вернет набор завершенных (sub) jQuery, так что это тот же конечный результат.

+0

Да, но я хочу, чтобы селектор просматривал только указанные строки. С помощью этого метода jQuery сначала извлекает все строки таблицы, а затем отфильтровывает нежелательные таблицы. – Bob

+0

@Bob, он делает это, даже если вы используете селекторную версию –

+0

О, это неутешительно. Я предположил, что внутри jQuery будет пропускать строки, которые меньше заданного индекса, или останавливаться, когда строки больше заданного индекса, когда вы используете их соответствующие модификаторы выбора. По крайней мере, так было бы не учитывать все строки таблицы. – Bob