2014-12-30 24 views
0

我試圖讓'頂欄'延伸來揭示一系列的鏈接。如何在單擊鏈接時切換DIV的大小以擴展其高度?

爲此,我選擇了jQuery,並且一些研究顯示我應該切換這個。

繼操縱類的 '頂吧' 的許多失敗的事件,我已經嘗試了不同的方法 - 看:http://jsfiddle.net/SQHQ2/2408/

的HTML:

<div id='topbar'>toggle me</div> 
<a href="#" class="menu">Toggle</a> 

的CSS:

#topbar { 
    background: orange; 
    color: white; 
    height: 60px; 
    text-align:center; 
} 

jQuery:

$(".menu").click(function() { 
     $("#topbar").toggle(function() { 
      $("#topbar").animate({ 
       height: 165 
      }, 200); 
     }, function() { 
      $("#topbar").animate({ 
       height: 60 
      }, 200); 
     }); 
    }); 

當我嘗試此代碼時,它只是以動畫方式隱藏頂部欄。

您能否幫助我實現一個解決方案,點擊與'.menu'類鏈接,將頂部欄從最高點60px擴展到160px高度,以揭示隱藏鏈接?

我歡迎替代來實現的解決方案,只要他們的工作:)

在新的一年和TIA最良好的祝願。

回答

2

另一種方法考慮的是讓所有的CSS和JavaScript分開。下面是我的意思的例子:

HTML

<div id='topbar'>toggle me</div> 
<a href="#" class="menu">Toggle</a> 

CSS

#topbar { 
    background: orange; 
    color: white; 
    text-align:center; 
} 

.short { 
    height: 60px; 
} 

.tall { 
    height: 160px; 
} 

的JavaScript

$(".menu").click(function() { 
    $('#topbar').toggleClass('short', 'tall'); 
}); 

這樣做是爲了保持你的風格在你的CSS,然後切換你想要應用的課程。

+1

這是生產環境中唯一可行的解​​決方案。 – th3falc0n

+0

我同意@ th3falc0n,它使您的JavaScript代碼不會因樣式選擇而變得複雜。對我來說,思考CSS類和選擇使用哪個類而不是CSS規則的細節要容易得多。 – wmock

+1

此外,它允許部署替代設計,而不必更改可能導致錯誤的基本代碼。 – th3falc0n

1
.toggle 

是jQuery中,上點擊切換處理程序(這就是爲什麼你的吧,當你點擊切換)

$(".menu").toggle(function() { 
    $("#topbar").animate({ 
     height: 165 
    }, 200); 
}, function() { 
    $("#topbar").animate({ 
     height: 60 
    }, 200); 
}); 

應該只是罰款。

+0

當我加載頁面時,這段代碼會導致「菜單」按鈕在我點擊它之前立即消失。 – Joel

+0

這不會發生在JSFiddle中,所以我不能重現您的錯誤。http://jsfiddle.net/SQHQ2/2409/ – th3falc0n

1
$(".menu").toggle(function() { 
    $("#topbar").animate({ 
     height: 165 
    }, 200); 
}, function() { 
    $("#topbar").animate({ 
     height: 60 
    }, 200); 
}); 
+0

當我加載頁面,這個代碼片段引起的「菜單」按鈕,立即消失,在我點擊它。 – Joel

1

也許你可以添加一個屬性到你的標籤來保持狀態(展開/未展開)。而不是切換隻是用它來動畫的頂欄

HTML

<div id='topbar'>toggle me</div> 
<a expanded="0" href="javascript:void(0);" class="menu">Toggle</a> 

JS

$(".menu").click(function() { 
    var thisObj = this; 
    var expanded = parseInt($(thisObj).attr("expanded")); 
    if (expanded){ 
     $("#topbar").animate({height:60},200, function(){ 
      $(thisObj).attr("expanded", "0");  
     }); 
    } else { 
     $("#topbar").animate({height:160},200, function(){ 
      $(thisObj).attr("expanded", "1"); 
     }); 
    } 
});