2013-07-19 67 views
0

所以,当另一个滑落时,我需要一个div滑动。为什么我的div无法工作?

例子:

当主页按钮被点击一个div,我们把它叫做box_Home,滑下。当单击游戏按钮时,box_Home应该向上滑动,然后box_Games应滑下。发生的是他们重叠而不是交换。

http://jsfiddle.net/M8UgQ/15/

var open = $('.open'), 
    a = $('ul').find('a'); 

console.log(a.hasClass('active')); 

open.click(function(e) { 
    e.preventDefault(); 
    var $this = $(this), 
     speed = 500; 

    var link_id = $this.attr('id'); 
    var box_id = '#box_' + link_id; 

    console.log(box_id); 
    if($this.hasClass('active') === true) { 
     $this.removeClass('active'); 
     $(box_id).slideUp(speed); 
    } else if(a.hasClass('active') === false) { 
     $this.addClass('active'); 
     $(box_id).slideDown(speed); 
    } else { 
     a.removeClass('active') 
     $(box_id).slideUp(speed); 

     $this.addClass('active'); 
     $(box_id).delay(speed).slideDown(speed); 
    } 
}); 
+1

HTTP:/ /jqueryui.com/accordion/ –

+1

你能否简化你的问题,因为很难弄清楚你试图完成什么。你的代码逻辑并不能反映你在问题中解释的内容。 – Learner

回答

0

看看这个 http://jsfiddle.net/rWrJ9/1/

主要的想法是......

如果点击的元素为active,删除它,否则:发现(如果有的话)已经active元素(使用$('.active'))并使用jQuery.map()使它们处于非活动状态并将它们滑动,2.使元素单击active

我也去掉了不需要的变量a

重要:map()函数内部的this距离this不同(或更确切地说,$this你把它称为)的map()功能外

0

我想你是说你有两个按钮id="Home" class="open"id="Game" class="open",和两个div id="box_Home"id="box_Game"。如果是这样,你添加class="box"到box_Home和box_Game,做这样的事情:

$('.open').click(function(e) { 

    e.preventDefault(); 
    var $this = $(this); 

    var link_id = $this.attr('id'); 
    var box_id = '#box_' + link_id; 

    $('.box').slideUp(); 
    $(box_id).slideDown(); 

}); 
0

嗨检查这个拨弄我希望你需要的东西来实现 jsfiddle

的,如果else语句你正在做的一个错误

else if(a.hasClass('active') === false) { 

,取而代之的是

else if($this.hasClass('active') === false) { 
相关问题