As discussed在jQuery UI論壇中,您不應該對此使用手風琴。
如果你想看起來像手風琴一樣的東西,那很好。使用他們的類來設計它們,並實現您需要的任何功能。然後添加一個按鈕來打開或關閉它們都非常簡單。 Example
HTML
通過使用jQuery UI類,我們保持我們的手風琴看着就像 「真正的」 手風琴。
<div id="accordion" class="ui-accordion ui-widget ui-helper-reset">
<h3 class="accordion-header ui-accordion-header ui-helper-reset ui-state-default ui-accordion-icons ui-corner-all">
<span class="ui-accordion-header-icon ui-icon ui-icon-triangle-1-e"></span>
Section 1
</h3>
<div class="ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom">
Content 1
</div>
</div>
推出自己的手風琴
主要是我們只想手風琴頭切換以下的兄弟姐妹,這是它的內容區域的狀態。我們還添加了兩個自定義事件「顯示」和「隱藏」,我們將在稍後介紹。
var headers = $('#accordion .accordion-header');
var contentAreas = $('#accordion .ui-accordion-content ').hide();
var expandLink = $('.accordion-expand-all');
headers.click(function() {
var panel = $(this).next();
var isOpen = panel.is(':visible');
// open or close as necessary
panel[isOpen? 'slideUp': 'slideDown']()
// trigger the correct custom event
.trigger(isOpen? 'hide': 'show');
// stop the link from causing a pagescroll
return false;
});
展開/收起所有
我們使用一個布爾isAllOpen
標誌當按鈕已被更改爲標記,這可以很容易地是一個類,或者一個更大的插件的狀態變量框架。
expandLink.click(function(){
var isAllOpen = $(this).data('isAllOpen');
contentAreas[isAllOpen? 'hide': 'show']()
.trigger(isAllOpen? 'hide': 'show');
});
交換按鈕時,「全部打開」
由於我們自定義的「顯示」和「隱藏」的事件,我們有話要聽,當面板正在改變。唯一的特殊情況是「它們全部打開」,如果是,該按鈕應該是「全部摺疊」,否則應該是「全部展開」。
contentAreas.on({
// whenever we open a panel, check to see if they're all open
// if all open, swap the button to collapser
show: function(){
var isAllOpen = !contentAreas.is(':hidden');
if(isAllOpen){
expandLink.text('Collapse All')
.data('isAllOpen', true);
}
},
// whenever we close a panel, check to see if they're all open
// if not all open, swap the button to expander
hide: function(){
var isAllOpen = !contentAreas.is(':hidden');
if(!isAllOpen){
expandLink.text('Expand all')
.data('isAllOpen', false);
}
}
});
編輯發表評論: 維持「1個面板只開放」,除非你點擊「全部展開」按鈕實際上是容易得多。 Example
複製此內容並在您的小提琴鏈接上運行,無法正常工作...以下代碼適用於您的小提琴鏈接'$('。accordion-expand-all a')。click(function(){ $ #accordion .ui-accordion-header:not(.ui-state-active)')。next()。slideToggle(); $(this).text($(this).text()=='Expand all '''全部收起':'全部展開'); $(this).toggleClass('collapse'); return false; });' –
如果存在嵌套的手風琴?此代碼是否可以工作? –