jQuery UI Accordion activate

扶醉桌前 提交于 2019-12-01 03:39:23

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

From documentation:

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

// setter
$( ".selector" ).accordion( "option", "active", 2 );

for me worked

$("#accordion").accordion({active:"h3:last"})

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).

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'); 

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);
nani

When you click on header, it is h3 element and it opens the next div..that is functionality. Now, For activate , you need to provide index or the element. index might be different than your id. so i would use :

$('.selector').accordion('option', 'activate', $(h3#id));

If you have index, you can use that..But most of the cases , if you created accordion dynamically, it is not easy to get index of an id. You can find indices like this..

 var processingHeaders = $('#accordion h3');
 for (i = 0; i < processingHeaders.length; i++) {

        ids.push($(processingHeaders[i]).attr('id'));
        idsForLaterChecks.push($(processingHeaders[i]).attr('id')); 
    }

now i got ids.. using indexOf : find the index in the array and use it..

Note: // idsForLaterChecks is global

With jQuery 1.9+ the:

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

is now:

$('#accordion').activate('option', 'active', elementSelector);

If you find it easier to use traversing methods, if you have HTML like this:

<div id="accordion">
    <h3><a href="#">Section</a></h3>
    <div>
        <p id="#item117" class="item">
            <a class="link-active" href="">Item 117</a>
        </p>            
    </div>
</div>

try this:

var myh3 = $('#item117').parent().prev('h3');
$('#accordion').accordion('option', 'active', myh3);

You can also enable and disable the accordion like this:

// Add the class ui-state-disabled to the headers that you want disabled
$( ".whatyouwantdisabled" ).addClass("ui-state-disabled");

To reactivate the tab:

// Remove the class ui-state-disabled to the headers that you want to enable
$( ".whatyouwantenabled" ).removeClass("ui-state-disabled");

Here's another way.

Include an ID="someId" in just each of the H3 header tags of the accordion and name the id's unique.

For example this id would be in series 'AccjA' the next h4 would be 'AccjB':

<h4 class="Accj" id="AccjA">
       <a href="#settings">A Fan?</a>
</h4>

Then activate whichever panel you wish with:

    $('#Accjoin').accordion('activate', '#AccjoinA')

I've used the above on a timeout to catch the attention of the user after the page is loaded with a 2 second delay using Ben Alman's ".doTimeout" function like:

$.doTimeout(2000, function () {
    $('#Accjoin').accordion('activate', '#AccjoinA')
});
Saeros

Try

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

or

$('#accordion').activate(document.getElementById('item117'));

The correct syntax for activating an accordion is

$(".selector").activate(var index)

where index is String,Element,boolean,Number,JQuery

Whatch the jquery API

Activate the second content of the Accordion contained in .

$(".selector").activate(1)

Close all content parts of the accordion.

$(".selector").activate(false)

Activate the first element matching the given expression.

$(".selector").activate("a:first")
antoniodornellas
$('#collapseOne').collapse('toggle');
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!