Jquery 滑动面板 - 加载下一个面板时关闭原始面板
Jquery Slide panel - Close original panel when next panel loaded
我正在尝试解决我在使用一些jQuery时遇到的一个小问题。
基本上,我要求的是,当一个面板打开时,如果用户单击另一个面板的触发器,则原始面板将向上滑动并将新面板向下移动到其位置。
你可以看到我到目前为止在 www.google-boost.co.uk 上得到的东西,两个触发器将是导航菜单上最右边的 2 个图标。
小提琴:http://jsfiddle.net/4Nx6v
我的示例代码如下所示:
$(document).ready(function(){
$(".btn-slide").click(function(){
$("#panel").slideToggle("slow");
$(this).toggleClass("active"); return false;
});
$(".btn-slide-two").click(function(){
$("#panel2").slideToggle("slow");
$(this).toggleClass("active"); return false;
});
if (!panel.is(':visible')) {
$('.panel').hide(opts.speed);$('.btn-slide').removeClass('active');
}
});
我个人的解决方案是通过数据属性连接链接和面板。这样,您只需要一段代码并在链接之间共享一个类。
http://jsfiddle.net/TrueBlueAussie/4Nx6v/1/
链接是这样的:
<a href="#" class="btn-slider" data-target="#panel">
然后代码如下所示:
$(document).ready(function () {
// Apply to all buttons of class btn-slider
$(".btn-slider").click(function () {
// remove active from all active links and collapse them
$('.btn-slider.active').each(function () {
var $link = $(this);
$($link.attr('data-target')).slideUp("slow");
$link.removeClass("active");
});
// Add active to the clicked link and slidedown the matching content
$(this).addClass("active");
$($(this).attr('data-target')).slideDown("slow");
return false;
});
if (!panel.is(':visible')) {
$('.panel').hide(opts.speed);
$('.btn-slider').removeClass('active');
}
});
这段代码可以再精细一点,但 2 分钟的工作期望是什么:)
更新:http://jsfiddle.net/TrueBlueAussie/4Nx6v/3/
根据切换的要求,这稍微好一些:
$(document).ready(function () {
$(".btn-slider").click(function () {
var $clicked = $(this);
$('.btn-slider.active').each(function () {
var $link = $(this);
// If this is not the clicked link, collapse its panel
if (!$link.is($clicked)) {
$($link.attr('data-target')).slideUp("slow");
$link.removeClass("active");
}
});
$clicked.toggleClass("active");
if ($clicked.hasClass("active")) {
$($clicked.attr('data-target')).slideDown("slow");
} else {
$($clicked.attr('data-target')).slideUp("slow");
}
return false;
});
if (!panel.is(':visible')) {
$('.panel').hide(opts.speed);
$('.btn-slider').removeClass('active');
}
});
相关文章:
- 滚动到容器中的下一个元素-几乎到了
- 后焦点更改为IE 11中的地址栏,而不是转移到表单中的下一个控件
- 使用CSS或js,使用动态选择器选择任意li的下一个元素
- 使用ajax将数据从一个步骤发送到下一个步骤的3步表单
- AngularJS&JSON-从Previous&下一个对象
- 使用向下箭头键(与tab键一样)聚焦下一个输入
- 来自文档或下一个静态父级的事件委派
- angularjs移除焦点上的活动类并添加到下一个项目
- 禁用旋转木马中的下一个按钮和上一个按钮
- 当按下一个键时,请多次按下不同的键
- 正在加载下一个帖子
- 构建JS测试,警报窗口重复上一个Q,而不是问下一个Q
- 删除“;上一个“;以及“;下一个“;基于当前幻灯片
- 真正的下一个具有特定类的元素
- 如何使用javascript获取下一个/转发url
- jQuery转盘下一个元素没有滑入
- 简单的垂直上一个和下一个按钮代码点击上下移动jQuery
- 按下一个HTML按钮,该按钮使用一个功能在同一个新窗口中打开URL
- 算法:从数组(javascript/angular)中按当前日期获取上一个和下一个事件
- Jquery 滑动面板 - 加载下一个面板时关闭原始面板