У меня есть элемент DOM (#installations) с несколькими дочерними элементами, только у одного из них есть класс .selected. Мне нужно выбрать этот класс и первые 3 из остальных (: not (.selected)) и показать их - цель состоит в том, чтобы показывать только 4 элемента, независимо от того, какой элемент имеет класс .selected.
Проблема в выражении:
#installations > *:not(.selected):nth-of-type(-n+3), .selected
: nth-of-type () игнорирует селектор: not () и просто выбирает первые 3 дочерних элемента #installation. Например, если у меня есть этот HTML:
<div id="installations">
<div id="one"/>
<div id="two"/>
<div id="three" class="selected"/>
<div id="four"/>
<div id="five"/>
</div>
У меня будет только один, два, три выбранных, а не первые четыре. Логическое следствие состоит в том, что: nth-of-type () будет иметь только один (один, два, четыре, пять) для выбора, поскольку: not () уже исключил выбранный, таким образом выбирая (один, два, четыре), а затем другая часть селектора , .selected
добавит выбранный элемент.
Если .selected отсутствует в первых четырех элементах, скажем, это шестой, у нас будут выделены первые три + шестые элементы.
Чтобы уточнить: выбор .selected плюс 3 смежных элемента тоже подойдет. Однако, это также сложно в случае, если .selected находится в последних 3 (если мы выберем следующие 3 смежных элемента)