Javascript 一次打开一个div,然后关闭jquery中打开的所有其他div

Javascript 一次打开一个div,然后关闭jquery中打开的所有其他div,javascript,jquery,html,css,Javascript,Jquery,Html,Css,正在尝试实现显示/隐藏描述框 如果用户单击第一个showDesc链接,则会打开其描述框。 然后,如果用户单击第二个showDesc链接,它将打开其说明框,并应关闭所有其他打开的说明框 请点击下面的链接: 下面是我的代码: $(“.showDesc”)。单击(函数(){ $(“.descContainer”).toggleClass(“显示”); }); .descContainer{ 位置:相对位置; 填充:24px40px24px24px; 边框顶部:1px实心rgba(0,0,0,08)

正在尝试实现显示/隐藏描述框

如果用户单击第一个showDesc链接,则会打开其描述框。 然后,如果用户单击第二个showDesc链接,它将打开其说明框,并应关闭所有其他打开的说明框

请点击下面的链接:

下面是我的代码:

$(“.showDesc”)。单击(函数(){
$(“.descContainer”).toggleClass(“显示”);
});
.descContainer{
位置:相对位置;
填充:24px40px24px24px;
边框顶部:1px实心rgba(0,0,0,08);
显示:无;
线高:24px;
背景色:#fdfd;
}
.descContainer.show{
位置:相对位置;
填充:24px40px24px24px;
边框顶部:1px实心rgba(0,0,0,08);
显示:块;
线高:24px;
背景色:#fdfd;
}

标题
  • 显示描述
描述文本 标题
  • 显示描述
描述文本
您的问题是因为您正在同时更改所有
.descContainer
元素上的类,而不仅仅是与单击的
.showDesc
相关的类

要解决此问题,需要使用DOM遍历来获取最近的('.feedContainer)
然后
next()
来获取要切换的元素,如下所示:

$(.showDesc”)。单击(函数(){
var$target=$(this).closest('.feedContainer').next(.descContainer”).toggleClass(“show”);
$(“.descContainer”).not($target).removeClass('show');//隐藏其他打开的元素
});
.descContainer{
位置:相对位置;
填充:24px40px24px24px;
边框顶部:1px实心rgba(0,0,0,08);
显示:无;
线高:24px;
背景色:#fdfd;
}
.descContainer.show{
位置:相对位置;
填充:24px40px24px24px;
边框顶部:1px实心rgba(0,0,0,08);
显示:块;
线高:24px;
背景色:#fdfd;
}

标题
  • 显示描述
描述文本 标题
  • 显示描述
描述文本
您的问题是因为您正在同时更改所有
.descContainer
元素上的类,而不仅仅是与单击的
.showDesc
相关的类

要解决此问题,需要使用DOM遍历来获取最近的('.feedContainer)
然后
next()
来获取要切换的元素,如下所示:

$(.showDesc”)。单击(函数(){
var$target=$(this).closest('.feedContainer').next(.descContainer”).toggleClass(“show”);
$(“.descContainer”).not($target).removeClass('show');//隐藏其他打开的元素
});
.descContainer{
位置:相对位置;
填充:24px40px24px24px;
边框顶部:1px实心rgba(0,0,0,08);
显示:无;
线高:24px;
背景色:#fdfd;
}
.descContainer.show{
位置:相对位置;
填充:24px40px24px24px;
边框顶部:1px实心rgba(0,0,0,08);
显示:块;
线高:24px;
背景色:#fdfd;
}

标题
  • 显示描述
描述文本 标题
  • 显示描述
描述文本
这不需要jQuery,甚至不需要javascript。使用:target CSS伪类在HTML+上设置ID和内部链接就可以了

.descContainer{
位置:相对位置;
填充:24px40px24px24px;
边框顶部:1px实心rgba(0,0,0,08);
线高:24px;
显示:无;
}
.descContainer:目标{
显示:块;
}



描述文本


描述文本

这不需要jQuery,甚至不需要javascript。使用:target CSS伪类在HTML+上设置ID和内部链接就可以了

.descContainer{
位置:相对位置;
填充:24px40px24px24px;
边框顶部:1px实心rgba(0,0,0,08);
线高:24px;
显示:无;
}
.descContainer:目标{
显示:块;
}



描述文本


描述文本

这就像手风琴。这个怎么样?这就像手风琴。这个怎么样?