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

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

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

Ответы

Ответ 1

Они применяются последовательно, поэтому сначала вы отфильтровываете первые четыре элемента (: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/>

Ответ 3

Не совсем то, что вы думаете -

Рабочий демонстрационный пример

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

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

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

Ответ 4

По какой-то причине :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 элементов (если у вас достаточно строк, то есть)