2011-01-13 2 views
8

Domyślnie istnieją nagłówki treści do kontrolowania rozwijania/zwijania. W mojej sytuacji mogłem jednak rozwinąć/zwinąć zawartość także za pomocą innych elementów. Na przykład:Czy mogę rozwinąć/zwinąć zawartość akordu JQuery ui, klikając również inne elementy?

podstawowa struktura kodu jquery ui accodion:

<script> 
    $(function() { 
     $("#accordion").accordion(); 
    }); 
    </script> 



<div class="demo"> 

<div id="accordion"> 
    <h3><a href="#">Section 1</a></h3> 
    <div> 
     <p> 
     Mauris mauris ante, blandit et, ultrices a, suscipit eget, quam. Integer 
     ut neque. Vivamus nisi metus, molestie vel, gravida in, condimentum sit 
     amet, nunc. Nam a nibh. Donec suscipit eros. Nam mi. Proin viverra leo ut 
     odio. Curabitur malesuada. Vestibulum a velit eu ante scelerisque vulputate. 
     </p> 
    </div> 
...... 
</div> 

i teraz. Mam inne elementy, takie jak:

<ul id="another elements can expand/collapse too"> 
    <li><a href=""> expand/collapse contents of section1 of id=accordion too</a></li> 
........ 
</ul> 

dziękuję bardzo !!

Odpowiedz

5

Możesz użyć .activate z fałszywym przekazaniem, aby programowo zwijać wszystkie elementy. Ponieważ masz tylko jeden element otwarty na raz, to będzie działać, aby zwinąć dowolny element jest otwarty, pokazując ten link. To zadziała tylko wtedy, gdy masz collapsible ustawiony na true.

Możesz podać inny element, który chcesz rozwinąć, aby rozwinąć ten element po kliknięciu.

+1

+1, ale opcja nazywa się teraz 'aktywny' tylko – gotqn

9

Collapse tab akordeon:

$('.accordion').accordion('activate', false); 

Rozwiń zakładkę pierwszy akordeon:

$('.accordion').each(function (idx, item) { 
    if ($(item).accordion("option", "active") === false) { 
     $(item).accordion('activate', 0); 
    } 
}); 
+0

Dziękuję. Uratowałeś mnie przed błądzeniem i bardzo doceniam twoje rozwiązanie. – Ace

+0

Ta wskazówka zadziałała dla mnie. +1. Musiałem po prostu zmienić to na: ['$ (" akordeon "). Akordeon (" opcja "," aktywny ", fałsz);' dla jQuery UI '1.11' (http://api.jqueryui.com/akordeon/# opcja-aktywne). Dzięki! – mhulse

5

I miał problemy z uzyskaniem Akordeony aby zwinąć/rozwinąć po ich początkowo załadowany. Aby obejść ten problem użyłem:

$('#accordionId h3').click(); 

... który naśladuje kliknięciu na obszar nagłówka i zmusi przełączanie klas aktywacji.

Czułem się jak włamywacz, ale to działało, Najlepiej.

+0

Zgodnie z ["komentarzem" tego użytkownika] (http://stackoverflow.com/a/24591516/456814): "* metoda" activate "została uznana za przestarzałą od czasu jquery ui 1.9 i usunięta z wersji 1.10+. Więcej informacji na ten temat i nowa składnia znajduje się w [Poradniku uaktualnienia jQuery UI 1.9] (http://jqueryui.com/upgrade-guide/1.9/#deprecated-activate-method) * "To według tego użytkownika, nie podjąłem czas sam zagłębić się w sprawę. –

8

Po aktualizacji interfejsu JQuery nie ma "aktywnej" metody na akordeonie. Tak więc, aby zwinąć wszystkie akordeony użyć:

$('.accordion').accordion('option', {active: false}); 
+0

thx dude, to mnie uratowało! – Janpan

+0

Może także zwinąć pojedyncze okienko z: $ ("akordeon"). Akordeon ("opcja, {aktywacja: fałsz}, idx); - gdzie "idx" to numer twojego panelu, oparty na zera. – jomofrodo

0

Korzystanie bootstrap:

//To Expand 
    var elem = $(this).find('.accordionElement'); 
    elem.addClass("in"); 
    elem.attr("style",""); 
    elem.attr("aria-expanded",true); 

następnie można zwinąć za pomocą:

var elem = $(this).find('.accordionElement'); 
    elem.removeClass("in"); 
    elem.attr("style","height: 0px;"); 
    elem.attr("aria-expanded",false);