问题
Well, this question is next version of my earlier question.
As I have all links collapsed, I want to create one button OR link saying "Show All", on clicking it will make all links active in accordion i.e. I want to view data of all links. Also need to create one button OR link saying "Hide All" which will make collapsed state as earlier.
Collapsed State
+++++++++++++++++++++++++++++++++++++++
+ Link 1 +
+ Link 2 +
+ Link 3 +
+ Link 4 +
+++++++++++++++++++++++++++++++++++++++
Should get after clicking "Show All"
+++++++++++++++++++++++++++++++++++++++
+ Link 1 +
+ Link 1 line 1 +
+ Link 1 line 2 +
+ Link 1 line 3 +
+ Link 2 +
+ Link 2 line 1 +
+ Link 2 line 2 +
+ Link 2 line 3 +
+ Link 3 +
+ Link 3 line 1 +
+ Link 3 line 2 +
+ Link 4 +
+ Link 4 line 1 +
+ Link 4 line 2 +
+++++++++++++++++++++++++++++++++++++++
How to do this?
回答1:
Here is your solution to expand and collapse all content panels.
function expandAll() {
$('#accordion h3').removeClass('ui-state-default')
.addClass('ui-state-active')
.removeClass('ui-corner-all')
.addClass('ui-corner-top')
.attr('aria-expanded', 'true')
.attr('aria-selected', 'true')
.attr('tabIndex', 0)
.find('span.ui-icon')
.removeClass('ui-icon-triangle-1-e')
.addClass('ui-icon-triangle-1-s')
.closest('h3').next('div')
.show();
$('.expand').text('collapse all').unbind('click').bind('click', collapseAll);
$('#accordion h3').bind('click.collapse', function() {
collapseAll();
$(this).click();
});
}
function collapseAll() {
$('#accordion h3').unbind('click.collapse');
$('#accordion h3').removeClass('ui-state-active')
.addClass('ui-state-default')
.removeClass('ui-corner-top')
.addClass('ui-corner-all')
.attr('aria-expanded', 'false')
.attr('aria-selected', 'false')
.attr('tabIndex', -1)
.find('span.ui-icon')
.removeClass('ui-icon-triangle-1-s')
.addClass('ui-icon-triangle-1-e')
.closest('h3').next('div')
.hide();
$('.expand').text('expand all').unbind('click').bind('click', expandAll);
$('#accordion').accordion('destroy').accordion();
}
and the fiddle
http://jsfiddle.net/wa9Dz/1/
回答2:
As a hack (last resort) you could use
// highlight headers
$("#accordion001").find('h3.ui-accordion-header')
.removeClass('ui-state-default')
.addClass('ui-state-active');
//open content panels
$("#accordion001").find('div.ui-accordion-content')
.addClass('ui-accordion-content-active')
.show();
But you will need to handle the closing as well (undo what we did) since the current code messes with the default behavior..
来源:https://stackoverflow.com/questions/12622069/jquery-accordion-de-collapse