我有这样的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。
因此,如果我要将.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中是不可能的。)
提前多多感谢!
答案 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
添加到其中