Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

jQuery UI Accordion activate

I'm not getting how to do this, or if I can do this. I have a jQuery UI Accordion, multiple sections with each section containing multiple anchor tags each with a unique string id.

I'd like to be able to have the accordion open to where a particular element with a given id is. Like say id "item117". Can I use something like

$('#accordion').activate('activate','#item117');

or even

$('#accordion').activate('activate',117);

I've tried those and some variations but can't get it to go. In the case I was trying to get working, the accordion should've opened to the end of the second section.


I'm still not getting this, so maybe I'm doing something else wrong as well. I've stripped it down to an example page here: http://www.ofthejungle.com/testaccordion.php Please have a look at it and its source.

like image 819
eflat Avatar asked Dec 14 '09 06:12

eflat


6 Answers

You need to call it using the function called accordion:

// Open the third set (zero based index)
$('#accordion').accordion('activate', 2); 

To open a section containing a specific element, you would do something like this. Note: you need to target the trigger that normally opens and closes the section. In the docs this is an h3 element, your trigger element may be different, so change this accordingly.

$('#accordion').accordion('activate', '#accordion > div:has(#item117) > h3'); 
like image 156
Doug Neiner Avatar answered Nov 19 '22 01:11

Doug Neiner


have been over this too & found nice and universal solution
- emulate clicking the header of required item by its id

$('#header-of-item-258').click(); 

that works everytime and anywhere not just accordion

like image 30
Peminator Avatar answered Nov 19 '22 01:11

Peminator


From documentation:

// getter
var active = $( ".selector" ).accordion( "option", "active" );

// setter
$( ".selector" ).accordion( "option", "active", 2 );
like image 22
BTR Avatar answered Nov 19 '22 00:11

BTR


This FINALLY worked for me:

$("#accordion").accordion("activate", $("#h3-id"));

NOTE!!! The id has to be that of the <h3> element you want to open up (in the default accordion setup).

like image 20
Chuck Han Avatar answered Nov 19 '22 00:11

Chuck Han


for me worked

$("#accordion").accordion({active:"h3:last"})
like image 10
Laurentiu Avatar answered Nov 19 '22 02:11

Laurentiu


I had the same problem with activating an accordion with #id. Sadly I hadn't found a way to this, so I've created a hack. I iterate through div elements in my accordion in order to get the index of interesting div. It looks like this:

acc = 'tab-you-are-interested-in';

// find corresponding accordion
act = 0;
panels = $('#accordion-element > div');
for (i=0; i<panels.length; i++) {
    if ( panels[i].id == acc ) {
        act = i;  
    }
}

$('#accordion-element').accordion('activate', act);
like image 3
delphiak Avatar answered Nov 19 '22 01:11

delphiak