2011-01-13 17 views
8

Varsayılan olarak, genişletme/daraltmayı denetlemek için içerikler bulunur. Ancak, durumumda, içeriği başka bir öğeyle de genişletebilir/daraltabilirim. Örneğin:JQuery ui Akordeon'un içeriğini başka bir öğeye tıklayarak da genişletebilir/daraltabilir miyim?

UI accodion kodunun temel yapısı:

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

ve şimdi. Başka bir elementim var, tıpkı şu gibi:

Çok teşekkür ederim!

cevap

5

Tüm öğeleri programsal olarak daraltmak için .activate hata ileticisini kullanabilirsiniz. Bir seferde sadece bir tane açık elemanınız olduğu için, bu bağlantıyı gösteren her hangi bir elemanın açık olduğunu anlamaya çalışır. Bu, yalnızca collapsibletrue olarak ayarlanmışsa çalışır.

Bu öğeyi genişletmek için hangi öğeyi genişletmek istediğinizi genişletebilirsiniz.

+1

+1 ama seçeneği artık 'etkin' denir yalnızca – gotqn

9

Collapse akordeon sekmesi:

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

ilk akordeon sekmesini genişletin:

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

Teşekkür ederim. Beni etrafından kurtardınız ve çözümünüzü takdir ediyorum. – Ace

+0

Bu ipucu benim için çalıştı. +1. Ben sadece bunu değiştirmek zorunda kaldım: ['$ ('. Akordeon') akordeon ('option', 'active', false); jQuery UI' 1.11' için] (http://api.jqueryui.com/akordeon/# seçeneği aktif). Teşekkürler! – mhulse

5

sorun başlangıçta yüklenen sonra genişletmek/daraltmak için ACCORDIONS almak zorunda için. Kullandığım Bundan kaçınmak için:

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

... hangi taklit başlık alanını tıklayıp aktivasyon sınıfları geçiş zorlayacaktır.

Bir kesmek gibi hissettim, ama işe yaradı, Best.

+0

[Bu kullanıcının "yorumu"] na göre (http://stackoverflow.com/a/24591516/456814): "* activate" yöntemi jquery ui 1.9'dan beri kullanımdan kaldırılmış ve 1.10'dan kaldırılmıştır. yeni sözdizimi [jQuery UI 1.9 Yükseltme Kılavuzu] 'nda bulunabilir (http://jqueryui.com/upgrade-guide/1.9/#deprecated-activate-method) * "Bu kullanıcıya göre, Soruna kendim bakma zamanı. –

8

JQuery UI güncellemesinden sonra akordeonda "aktif" yöntem yoktur.

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

ardından kullanmakta çökebilir: Bootstrap kullanma

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

thx dude, bu beni kurtardı! – Janpan

+0

Tek bir bölmeyi de ($ ('. Accordion') akordeon ile ('option, {active: false}, idx); - 'idx', bölme numaranız sıfır tabanlı. – jomofrodo

0

: Yani daraltmak için tüm akordeon kullanmak

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