如何从除下一个元素之外的所有元素中删除该类?
例如:
<ul>
<li class="current"><a href="#">Trigger</a></li>
<li class="next"><a href="#">Trigger</a></li>
<li class="next"><a href="#">Trigger</a></li>
<li class="next"><a href="#">Trigger</a></li>
</ul>
点击触发链接a
会移除"next"
元素中的所有li
类,但正好在下面的
我并不担心实现这一目的的整套代码。除了下一个li之外,我已经写了除了下一个除了下一个课程之外的所有东西吗?
更新:已解决
似乎我忽略了一个效果很好的简单解决方案:
$(this).parent().siblings().not().next().removeClass('next');
答案 0 :(得分:2)
使用.nextAll
方法获取当前元素之后的所有连续兄弟。然后,使用.slice(1)
减少集合。
$('li a').click(function() {
$(this).parent().nextAll().slice(1).removeClass('next');
});
之前的方法仅从后续项中删除next
。如果您想影响所有兄弟姐妹,可以使用以下内容:
$('li a').click(function() {
var $parent = $(this).parent();
$parent.siblings().not($parent.next()).removeClass('next');
});
另一个选择:从所有元素中删除next
类,然后将其添加到下一个元素。
答案 1 :(得分:0)
刚才意识到这很简单!
$(this).parent().siblings().not().next().removeClass('next');
答案 2 :(得分:0)
这样的事情:
$('a').click(function() {
$(this).parent().nextAll('.next').not($(this).next()).removeClass('next');
});
答案 3 :(得分:0)
你可以试试这个:
var $ul = $('ul').on('click', 'a', function () {
// get the next element
var n = $(this).next('a');
// get everything else except this
$ul.find('a').not(this).removeClass('next');
});
答案 4 :(得分:0)
您可以获取下一个li元素的nextAll,并且您的li是链接的父级
$("a").click( function() {
$(this).parent().next().nextAll().removeClass();
});