Выбор первого в подмножестве - PullRequest
3 голосов
/ 21 октября 2011

У меня есть DOM, как это;

<li></li>
<li class="this"></li>
<li class="this"></li>
<li></li>
<li></li>
<li class="this"></li>
<li class="this"></li>
<li class="this"></li>
<li></li>
<li class="this"></li>
<li></li>
<li></li>

Я бы хотел выбрать только первый li в каждой серии последовательных this es.

Итак, если бы я, например, применил .addClass("that") к объектам этого селектора, результирующий DOM выглядел бы так:

<li></li>
<li class="this that"></li>
<li class="this"></li>
<li></li>
<li></li>
<li class="this that"></li>
<li class="this"></li>
<li class="this"></li>
<li></li>
<li class="this that"></li>
<li></li>
<li></li>

Что было бы наиболее эффективным способом достижения такого эффекта? Я не могу добавлять или удалять какие-либо элементы в DOM (например, невозможно обернуть последовательные серии в их собственные div-оболочки).

Заранее большое спасибо!

Ответы [ 2 ]

6 голосов
/ 21 октября 2011

Будет ли это работать?

$("li:not(.this) + .this").addClass('that');

РЕДАКТИРОВАТЬ: Если первый элемент класса this, это не будет работать, вам понадобится (если он применяется):

$("li:not(.this) + .this, .this:first-of-type").addClass('that');
1 голос
/ 21 октября 2011
$('.this').each(function(){
    if($(this).prev().hasClass('this')==false){
        $(this).addClass('that');
    }
});

перебирает все элементы с классом this, и если его предыдущий брат не имеет того же класса, добавьте к нему that

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...