问题
I have 2 links that both reveal different divs. I've got it slide toggling all fine. But what i need it to do is collapse the opposite toggle (if it's open). Similar to how an accordion panel works (when you trigger a reveal toggle link the open panel closes and the newly triggered panel opens).
Here's the jQuery I'm currently using
//Left reveal toggle
$(".left-reveal-toggle").on("click", function () {
$('.left-reveal-section').slideToggle("slow");
$(".left-reveal-toggle").toggleClass("active");
});
//Right reveal toggle
$(".right-reveal-toggle").on("click", function () {
$('.right-reveal-section').slideToggle("slow");
$(".right-reveal-toggle").toggleClass("active");
});
Here's a working JSFiddle link: http://jsfiddle.net/wq73aeuh/1/
//Left reveal toggle
$(".left-reveal-toggle").on("click", function() {
$('.left-reveal-section').slideToggle("slow");
$(".left-reveal-toggle").toggleClass("active");
});
//Right reveal toggle
$(".right-reveal-toggle").on("click", function() {
$('.right-reveal-section').slideToggle("slow");
$(".right-reveal-toggle").toggleClass("active");
});
.left-panel {
min-height: 400px;
background: #31b9ce;
width: 50%;
float: left;
text-align: center;
}
.right-panel {
min-height: 400px;
background: #4f5cd6;
width: 50%;
float: left;
text-align: center;
}
.left-panel-reveal {
min-height: 400px;
background: #31b9ce;
width: 50%;
float: left;
text-align: center;
}
.right-panel-reveal {
min-height: 400px;
background: #4f5cd6;
width: 50%;
float: left;
text-align: center;
}
.hide {
display: none;
}
.clear {
clear: both;
font-size: 0px;
line-height: 0px;
display: block;
}
html,
body,
div,
span,
applet,
object,
iframe,
h1,
h2,
h3,
h4,
h5,
h6,
p,
blockquote,
pre,
a,
abbr,
acronym,
address,
big,
cite,
code,
del,
dfn,
em,
font,
img,
ins,
kbd,
q,
s,
samp,
small,
strike,
strong,
sub,
sup,
tt,
var,
b,
u,
i,
center,
dl,
dt,
dd,
ol,
ul,
li,
fieldset,
form,
label,
legend,
table,
caption,
tbody,
tfoot,
thead,
tr,
th,
td {
margin: 0;
padding: 0;
border: 0;
outline: 0;
font-size: 100%;
vertical-align: baseline;
background: transparent;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<div class="left-panel">
<a href="#" class="left-reveal-toggle">Read more form left panel</a>
</div>
<div class="right-panel">
<a href="#" class="right-reveal-toggle">Read more from right panel</a>
</div>
<div class="clear"></div>
<div class="left-reveal-section hide">
<div class="left-panel-reveal">left panel reveal content</div>
<div class="right-panel-reveal">left panel reveal content</div>
</div>
<div class="right-reveal-section hide">
<div class="left-panel-reveal">right panel reveal content</div>
<div class="right-panel-reveal">right panel reveal content</div>
</div>
回答1:
Use at the top of function in right: $('.left-reveal-section').slideUp('slow'); And top of function in left: $('.right-reveal-section').slideUp('slow');
来源:https://stackoverflow.com/questions/43140791/reveal-toggle-hide-other-div-jquery