当用户单击选项卡时,我正在尝试创建可扩展的展开。
它基本上是 2 行选项卡,每行都有自己的颜色,当用户单击其中一个时,隐藏的 DIV 应该动画出来。我不认为这很难做到,但是当用户在另一个选项卡已经打开的情况下单击另一个选项卡时,就会出现问题。然后新内容必须取代现有内容的位置。
这就是我到目前为止所拥有的; http://jsfiddle.net/craigzilla/W3afW/
4张图片代表应该发生的事情 当您单击选项卡 01、02、03 和 08 时
当用户单击选项卡时,我正在尝试创建可扩展的展开。
它基本上是 2 行选项卡,每行都有自己的颜色,当用户单击其中一个时,隐藏的 DIV 应该动画出来。我不认为这很难做到,但是当用户在另一个选项卡已经打开的情况下单击另一个选项卡时,就会出现问题。然后新内容必须取代现有内容的位置。
这就是我到目前为止所拥有的; http://jsfiddle.net/craigzilla/W3afW/
4张图片代表应该发生的事情 当您单击选项卡 01、02、03 和 08 时
$(document).ready(function() {
var $cont;
function tgl_conts(){
$('.content').stop().animate({height: 0},1200);
$cont.stop().animate({height:210},1200);
}
$('.tab').on('click',function(){
var tabClass=$(this).attr('class').split(' ')[1];
$cont = $('.'+tabClass+':not(.tab)');
var h = ($cont.height() === 0) ? tgl_conts() : ( $cont.stop().animate({height: 0},1200) );
});
});
小心!!!我删除了您的所有 ID(也包括 CSS),并为您的重复项添加了单独的类:
.turquoise
.turquoise2
同样的,因为.pink
.pink2
每个元素都有 2 个元素,我们必须区分它们!
PS:实用性不错!很好的表达,好主意兄弟!
编辑
为 jQuery UI 库添加了“速度”(动画时间)和缓动设置:
好的......所以基本上你想要做的是<div>
在你的每个选项卡中都有一个元素。当用户单击其中一个选项卡时,jQuery 将确保没有其他“弹出”的 div 元素可见,然后显示相应的 div。
我将以 3 个标签为例 -
<div class="tab" id="pink">
<img src="http://placehold.it/160x160" width="160" height="160" />
<span class="tab_text">TITLE 01</span>
<div class="pop-out">Some pink information</div>
</div>
<div class="tab" id="turquoise">
<img src="http://placehold.it/160x160" width="160" height="160" />
<span class="tab_text">TITLE 02</span>
<div class="pop-out">Some turquoise information</div>
</div>
<div class="tab" id="yellow">
<img src="http://placehold.it/160x160" width="160" height="160" />
<span class="tab_text">TITLE 03</span>
<div class="pop-out">Some yellow information</div>
</div>
请注意,每次我使用id
属性时,它们都是唯一的。该id
属性应始终具有唯一值,而不是class
您可以看到的属性可以具有相同的值。class="pop-out"
pop-out
将是我们识别所有弹出 div 元素的方式sel
类(selected 的缩写)。这样我们就可以跟踪上次打开的 div(如果有的话),并确保在打开新的之前关闭它。现在,假设我们希望触发器是整个选项卡。用户点击它的任何地方都会触发弹出窗口。
$(".tab").on('click',function(){
$("div.pop-out.sel").fadeOut().removeClass('sel'); // this will hide the last selected div and remove its selected class
$(this).find("div.pop-out").fadeIn().addClass('sel'); // this will display the div of the element the user clicked and add the selected class.
}
显然,您可以替换任何您想要的动画。
现在我们还可以使用以下方法跟踪打开的选项卡 -
$("div.pop-out.sel").closest("div.tab");
这将返回当前正在显示的弹出 div 的父级。记得先测试一个选定的 div 是否 真的存在 :)