Вопрос:

Цепные селекторы jQuery: lt и: gt

jquery jquery-selectors chaining

20624 просмотра

4 ответа

32725 Репутация автора

У меня есть таблица с более чем 9 строк.

Если я сделаю это: $('table tr:gt(3):lt(6)')получу ли я 3 или 6 элементов в конце, и почему? Все ли селекторы применяются к одному и тому же первичному выбору или они последовательно применяются к разным выборам?

Автор: glmxndr Источник Размещён: 16.07.2009 12:23

Ответы (4)


30 плюса

41850 Репутация автора

Решение

Они применяются последовательно, поэтому сначала вы отфильтруете первые четыре элемента ( :gt(3)), а затем отфильтруете все элементы после шестого ( :lt(6)) элемента уже отфильтрованного набора.

Представьте себе этот HTML:

<br/><br/>
<br/><br/>
<br/><br/>
<br/><br/>
<br/><br/>
<br/><br/>

Затем выполните следующее jQuery:

$('br:gt(3):lt(6)').addClass('sel');

Теперь у вас будет:

<br/><br/>
<br/><br/>
<br class="sel"/><br class="sel"/>
<br class="sel"/><br class="sel"/>
<br class="sel"/><br class="sel"/>
<br/><br/>
Автор: Blixt Размещён: 16.07.2009 12:29

1 плюс

19737 Репутация автора

По какой-то причине :lt(6)будет игнорироваться в этом выборе, поэтому он вернет все, что больше 3 в этом примере.

Однако, если вы переключите его, он будет работать как положено

$('table tr:lt(6):gt(3)')

вернет 2 строки (только строки 4 и 5 находятся между 6 и 3).

** редактировать: ** с использованием v.1.3.2

И также, lt(6)не игнорируется, не просто работает, как я ожидал. Так :gt(3):lt(6)что на самом деле вернет 6 элементов (если у вас достаточно строк, то есть)

Автор: peirix Размещён: 16.07.2009 12:32

26 плюса

16895 Репутация автора

Я предлагаю вам использовать метод slice ().

http://docs.jquery.com/Traversing/slice#startend

$('table tr').slice(2, 5).addClass("something");
Автор: ScottE Размещён: 16.07.2009 12:32

4 плюса

108615 Репутация автора

Не совсем то, что вы могли бы подумать

Рабочая Демо

По существу, второй фильтр применяется последовательно к сопоставленному набору первого фильтра.

Например, для таблицы с 10 строками :gt(3)будет выполняться фильтрация по элементам 5 - 10, после чего :lt(6)будут применены 6 элементов, без фильтрации.

Если вы добавите / отредактируете демонстрационный URL, вы можете поиграть с селектором и убедиться в этом сами. Если вы измените второй фильтр на :lt(2), вы получите строки 5 и 6, выделенные красным

Автор: Russ Cam Размещён: 16.07.2009 12:34
Вопросы из категории :
32x32