2013-07-19 93 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) { 
相關問題