我的 html 中有三个滑动面板。 问题是面板在打开时会相互重叠。 我想获得一个功能,当一个面板(例如#panel1)已经打开并且用户将单击另一个面板(#panel2)然后第一个面板(#panel1)将滑出时,可以创建一个事件一次只打开一个面板。
有人可以帮我吗??
提前致谢。
HTML:
<ul id="menu">
<li><img id="icon_1" src="images/image1.png"></li>
<li><img id="icon_2" src="images/image2.png"></li>
<li><img id="icon_3" src="images/image3.png" ></li>
</ul>
<div id="panel1"></div>
<div id="panel2"></div>
<div id="top_panel"></div>
jQuery(#panel1 和#panel2 函数取自 http://web.archive.org/web/20150227082803/http://www.jqeasy.com/jquery-slide-panel-plugin ):
$(document).ready(function(){
$('#panel1').slidePanel({
triggerName: '#icon_1',
speed: 'slow'
});
$('#panel2').slidePanel({
triggerName: '#icon_2',
speed: 'slow'
});
});
$(document).ready(function(){
$("#icon_3").click(function(){
$("#top_panel").slideToggle("slow");
});
});
最佳答案
这些行中的内容。我会给你 data-* 属性来提供面板和图像之间的关系。根据条件跟进逻辑。
Javascript
$('#panel1').slidePanel({
speed: 'slow',
position: 'static'
});
$('#panel2').slidePanel({
speed: 'slow',
position: 'static'
});
$("[id^=icon]").click(function () {
// Current active panel
var $currPanel = $('#' + $(this).data('panel'));
// Slideup all the other panels other than $currPanel
$('.panel').not($currPanel).slideUp();
// If $currPanel has no active class only then slide down
if (!$currPanel.hasClass('current')) {
$currPanel.slideDown("slow");
}
// Add class active to current panel
$currPanel.addClass('current');
// Remove class for other panels
$('.panel').not($currPanel).removeClass('current');
});
HTML
<ul id="menu">
<li>
<img id="icon_1" src="images/image1.png" data-panel="panel1">
</li>
<li>
<img id="icon_2" src="images/image2.png" data-panel="panel2">
</li>
<li>
<img id="icon_3" src="images/image3.png" data-panel="top_panel">
</li>
</ul>
<div id="panel1" class="panel"></div>
<div id="panel2" class="panel"></div>
<div id="top_panel" class="panel"></div>
Check Demo
关于javascript - jQuery 滑动面板 - 打开另一个面板时关闭一个面板/如何只打开一个面板?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18135663/