选项卡式导航。 Jquery和CSS问题

时间:2011-08-26 16:57:45

标签: jquery html tabs navigation indexing

前面讨论的脚本问题。 Here

基本上我的html表现不像我想要的那样。

点击: 全部 - 显示所有容器

<div class="slide">

动作冒险 - 显示

<div class="slide" title="Action Adventure">

戏剧 - 显示

<div class="slide" title="Drama">

等等......

固定 在初始加载时,仅加载所有容器当前仅在第一次加载时工作。点击anather流派后,再回到'All',它似乎表现得只是在展示彼此     

New Demo Here

此问题仍然存在 然后,我注意到在初始加载后,单击列表,它将显示下一个容器而不是具有相同标题和文本的容器。我认为它与index()有关;但我不完全确定。我需要让这个dang的东西正常工作。

Demo here

谢谢你们!

ps,还有其他jquery隐藏了nth-child。只是忽略它。

感谢您的帮助!

我需要帮助的最后一件事是隐藏所有可见的第一个孩子的ul。除了动作冒险中的第一个。

2 个答案:

答案 0 :(得分:1)

这并不能完全回答你的问题,但在你做淡出之前一定要停止排队的动画:

$(".slideMove .slide").stop(true,true).fadeOut("slow");

否则,多次单击按钮将导致动画反复运行

答案 1 :(得分:1)

这里:

Working DEMO

demo with comments

我们正在使用点击.index()的{​​{1}}个数字来打开一个li等于此:eq()的TAB。

看看这个表: Before你有这个:

.index()

每个li index ---> .slide index _____________________________________ Action | 0 ---> Action | 0 Comedy | 1 ---> Comedy | 1 Drama | 2 ---> Drama | 2 Docume. | 3 ---> Docume.| 3 都很好地打开了他自己的标签li

但是你决定添加一个会打开所有标签的元素.slide, 但现在你有了这个:

.all

正如您所看到的,li index ---> .slide index _____________________________________ All | 0 (OPEN ALL) Action | 1 ---> Action | 0 Comedy | 2 ---> Comedy | 1 Drama | 3 ---> Drama | 2 Docume. | 4 ---> Docume.| 3 没有打开他特定的“兄弟”标签。它只需打开所有标签!
但是,添加此“额外”.all元素,您已将其他li元素的索引号“移动”了1。 现在点击li 剧情,现在索引 3 ,它将打开具有相同索引的TAB。但那是包含纪录片电影的TAB!因为它仍然有索引号 3

要解决这个新问题,您必须搜索具有此索引号但为-1的选项卡 (戏剧索引(3)-1 =打开戏剧标签索引(2))

li

考虑到这一点,您只需使用jQuery $('ul.nav li').click(function() { var i = $(this).index()-1; $('.slide:eq('+i+')').fadeIn(400); }); 选择器.fadeOut()所有先前打开的标签页。例如:

:visible

这样可以防止您的脚本干扰所有其他$('.slide:visible').fadeOut(400);

这是你的剧本:

.slide

您也可以使用:$('.slide').css({position:'relative',display:'block'}); $('ul.nav li').click(function() { $(this).addClass('btnSelect').siblings().removeClass('btnSelect'); if( $(this).hasClass('all') ){ $('.slide:visible').fadeOut(400,function(){ $('.slide').fadeIn(400); $('.grid ul li:nth-child(1)').show(); }); return; } var i = $(this).index()-1; $('.slide:visible').fadeOut(400,function(){ $('.slide:eq('+i+')').fadeIn(400); $('.grid ul li:nth-child(1)').hide(); }); }); 看起来更漂亮! :)