首先选择子集

时间:2011-10-20 22:54:34

标签: jquery jquery-selectors

我有这样的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>

我只想在连续this es。

的每个系列中选择第一个li

因此,如果我要将.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 个答案:

答案 0 :(得分:6)

这会有用吗?

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

编辑:如果第一个项目属于this课程,那将不起作用,您需要这个(如果适用):

$("li:not(.this) + .this, .this:first-of-type").addClass('that');

答案 1 :(得分:1)

$('.this').each(function(){
    if($(this).prev().hasClass('this')==false){
        $(this).addClass('that');
    }
});

使用类this循环遍历所有元素,如果其上一个兄弟没有相同的类,则将that添加到其中