首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何选择多个元素的siblings()?

如何选择多个元素的siblings()?
EN

Stack Overflow用户
提问于 2012-07-20 23:09:08
回答 3查看 1.3K关注 0票数 5

假设我有一个隐藏了所有<dd><dl>。单击<dt>将使用以下代码切换其后面的<dd>

代码语言:javascript
复制
$(this).nextUntil('dt').toggle();

http://jsfiddle.net/mblase75/FZQj7/

现在,我想自动隐藏其他<dd>后面的<dt>,所以我尝试用下面的代码获取兄弟:

代码语言:javascript
复制
$(this).nextUntil('dt').toggle()
    .siblings().filter('dd').hide();

http://jsfiddle.net/mblase75/FZQj7/1/

但是什么也没有发生,因为我已经用.nextUntil选择的每个<dd>都是彼此的兄弟。因此,它们都是隐藏的,不会显示任何内容。

必须有一种简洁的方法来告诉jQuery选择除了我已经选择的兄弟项之外的所有兄弟项,但我看不到它。想法?

EN

回答 3

Stack Overflow用户

发布于 2012-07-20 23:12:01

这个怎么样?注意not函数which you can read about here的使用。

http://jsfiddle.net/lbstr/FZQj7/6/

代码语言:javascript
复制
$('dt').on('click',function() {
    var $this = $(this),
        $firstGroup = $this.nextUntil('dt');
    $firstGroup.toggle();
    $this.siblings('dd').not($firstGroup).hide();
});​
票数 3
EN

Stack Overflow用户

发布于 2012-07-20 23:21:00

一个简单的解决方案是将一个类应用于所显示的元素。每次单击时,您都可以在显示所需的集合之前隐藏包含此类的元素。

http://jsfiddle.net/FZQj7/11/

代码语言:javascript
复制
$('dt').on('click',function() {
    $('.visibledd').hide().removeClass('visibledd');
    $(this)
        .nextUntil('dt')
        .toggle()
        .addClass('visibledd');
});​
票数 1
EN

Stack Overflow用户

发布于 2012-07-20 23:21:50

这里有一些比其他的更简单的东西:

代码语言:javascript
复制
$('dt').on('click',function() {
    $(this).siblings('dd').hide();
    $(this).nextUntil('dt').show();
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11582035

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档