jquery只提供prev()、prevAll()/next()、nextAll()以获取元素紧邻的前面/后面同辈元素的元素集合,并不能直接实现标题中的需求。但jquery 提供了slice(start,end)方法以实现“选取一个匹配的子集”,这个方法参数的用法跟原生js的slice方法类似,熟悉的童鞋可以很快掌握这个jquery方法的使用技巧!
上实例代码:
.test li{cursor: pointer;margin: 10px 0;}
.test .on{background-color: #f00;}
需求:点击下面的某个元素,选中后面紧邻的3个同级元素,添加class标识"on"标红显示
- 第1个元素
- 第2个元素
- 第3个元素
- 第4个元素
- 第5个元素
- 第6个元素
$(".test").on('click', 'li', function(event) {
var index=$(this).index(),
lis=$(this).parent().find('li'),
// selected=lis.slice(index+1,index+1+3);
selected=lis.slice(index-3<0?0:index-3,index);
$('.on').removeClass();
selected.addClass('on');
});
提示:你可以先修改部分代码再运行。
上面代码可实现“点击某个元素,选中后面紧邻的3个同级元素,添加class标识"on"标红显示”,把默认的selected语句注释掉,把默认注释的selected语句放出来,可实现"点击某个元素,选中前面紧邻的3个同级元素,添加class标识"on"标红显示",要注意到是第1个参数如果是负数是从集合的尾部开始选起,所以我们要加个判断如果第1个参数是负数则将值赋值为0