1

我有以下 jQuery:

$(this).siblings().removeClass('active');
$(this).addClass('active');

是否可以将其组合成一行?你不能这样做:

$(this).siblings().removeClass('active').addClass('active');

因为选择的 DOM 节点现在是所有兄弟节点而不是原始节点,因为您从原始选择转移(sp?)。

我想知道是否有一些选择器可以再次选择您的原始选择,您可以将其链接到第一行,以便它们都在一行中。

4

2 回答 2

2

您可以使用end

$(this).siblings().removeClass('active').end().addClass('active');
于 2013-09-08T23:27:59.437 回答
2

我相信您正在寻找的.end()功能。引用该文档:

大多数 jQuery 的 DOM 遍历方法都对 jQuery 对象实例进行操作并生成一个新的对象实例,以匹配一组不同的 DOM 元素。当这种情况发生时,就好像新的元素集被推到了一个在对象内部维护的堆栈上。每个连续的过滤方法都会将一个新元素集推入堆栈。如果我们需要一个较旧的元素集,我们可以使用 end() 将集合从堆栈中弹出。

于 2013-09-08T23:28:09.083 回答