我有一个这样的清单:
<ul id="items"><li><a href="">Link</a></li><li><a href="">Link</a></li><li class="divider"></li><li><a href="">Link</a></li><li><a href="">Link</a></li></ul>
当我点击任何一个锚时,我想为所有li添加一个类,除了我点击的链接的父级和带有“divider”类的li。
我可以让它与所有兄弟姐妹一起工作:
$(this).parent().siblings().attr("class", "transparent");
那么如何通过“divider”类忽略li呢?
非常感谢。
答案 0 :(得分:16)
您还可以使用.not
命令过滤掉您不想要的任何内容。这是传递Matt。
:not
伪类选择器的替代方法
$(this).parent().siblings().not(".divider").addClass("transparent");
也可能更好
修改强>
jQuery很糟糕,使用DOM;)
link.addEventListener("click", function addClasses() {
var li = this.parentNode,
lis = li.parentNode.children;
[].forEach.call(lis, function addClassIfCorrect(el) {
var classList = el.classList
if (el !== li && !classList.contains("divider")) {
classList.add("transparent");
}
});
});
答案 1 :(得分:2)
您可以在调用divider
:
siblings
课程
$(this).parent().siblings(':not(.divider)').attr("class", "transparent");