首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >只有在前一个元素关闭后才能切换div

只有在前一个元素关闭后才能切换div
EN

Stack Overflow用户
提问于 2015-01-15 21:16:01
回答 2查看 187关注 0票数 0

我现在已经设置了以下内容:(所有具有“秘密”类的div都是隐藏的)

代码语言:javascript
复制
<div class="row">
    <div class="block align">
        <a class="desktop" data-toggle-target="click-1">
        </a>
    <div>
    <div class="block align">
        <a class="desktop" data-toggle-target="click-2">
        </a>
    <div>
<div>
<div class="row">
    <div id="click-1" class="secret">
        stuff
    <div>
    <div id="click-2" class="secret">
        stuff
    <div>
<div>
<div class="row">
    <div class="block align">
        <a class="desktop" data-toggle-target="click-3">
        </a>
    <div>
    <div class="block align">
        <a class="desktop" data-toggle-target="click-4">
        </a>
    <div>
<div>
<div class="row">
    <div id="click-3" class="secret">
        stuff
    <div>
    <div id="click-4" class="secret">
        stuff
    <div>
<div>

我每次slideToggle一次,如下所示

代码语言:javascript
复制
$('.align .desktop').click(function (e) {
    $( '#' + $(this).data('toggleTarget') ).slideToggle(300).toggleClass('open');        
});

问题是,如果我单击数据切换- slideToggle =“click -2”来打开相应的div,则需要打开的任何其他div首先关闭,然后有相应的div slideToggle。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-01-15 21:54:50

对于这种类型的事情,HTML结构并不理想,但是将一系列选择器链接在一起可以做到这一点:

代码语言:javascript
复制
$('.align .desktop').click(function (e) {
   var target = $(this).data('toggleTarget');
   $( '#' + target).siblings(".secret").slideUp().end().closest(".row").siblings(".row").find(".secret").slideUp().end().end().end().slideToggle(300).toggleClass('open');        
});

FIDDLE

票数 0
EN

Stack Overflow用户

发布于 2015-01-15 21:18:35

由于您使用JQuery,所以使用它们的BuildIn函数作为手风琴http://jqueryui.com/accordion/

UPDATE:或者为您的Structur编写一个函数,它先关闭所有块,然后打开单击的块。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27973125

复制
相关文章

相似问题

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