2011-01-13 1 views
8

기본적으로 확장/축소를 제어하는 ​​내용의 머리글이 있습니다.하지만 제 상황에서는 다른 요소로 내용을 확장/축소 할 수도 있습니다. 예를 들면 :다른 요소를 클릭하여 JQuery ui Accordion의 내용을 확장/축소 할 수 있습니까?

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> 

지금. 다음과 같은 요소가 있습니다.

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

대단히 감사합니다!

답변

5

false가 전달 된 .activate을 사용하면 모든 요소를 ​​프로그래밍 방식으로 축소 할 수 있습니다. 한 번에 하나의 요소 만 열려 있기 때문에 링크가 열려있는 요소가 무엇이든 축소 할 수 있습니다. 이는 collapsibletrue으로 설정된 경우에만 작동합니다.

확장 할 다른 요소를 전달하여 클릭시 해당 요소를 확장 할 수 있습니다.

+1

+1,하지만 옵션은 현재 '활성'이라고 만 – gotqn

9

축소 아코디언 탭 :

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

처음 아코디언 탭을 확장은 :

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

감사합니다. 당신은 저를 주변에서 놀림에서 구해 주셨습니다. 그리고 나는 당신의 해결책에 크게 감사드립니다. – Ace

+0

이 팁은 나를 위해 일했습니다. +1. 나는 단지 이것을 다음과 같이 변경해야만했다 : ['$ ('. accordion').] 아코디언 ('option', 'active', false);'for jQuery UI'1.11'] (http://api.jqueryui.com/아코디언/# 옵션 - 활성). 감사! – mhulse

5

나는 문제가 처음로드 된 후 확대/축소하려면 아코디언을 받고 있었다합니다. 이 문제를 해결하기 위해 다음과 같이 사용했습니다.

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

... 헤더 영역을 클릭하면 활성화 클래스가 강제로 전환됩니다.

해킹처럼 느껴지지만, 가장 효과적입니다.

+0

[이 사용자의 "코멘트"] (http://stackoverflow.com/a/24591516/456814)에 따르면 : "*'activate' 메소드는 jquery ui 1.9부터 사용되지 않으며 1.10+에서 제거되었습니다. 새로운 구문은 [jQuery UI 1.9 업그레이드 안내서] (http://jqueryui.com/upgrade-guide/1.9/#deprecated-activate-method)에서 찾을 수 있습니다. * "그 사용자에 따르면, 필자는 문제를 직접 조사 할 시간입니다. –

8

JQuery UI를 업데이트 한 후 아코디언에 대한 "활성"방법이 없습니다.

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

후 사용 무너질 수 : 부트 스트랩을 사용하여

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

thx 젠체하는 사람, 이것은 나를 구 했어요! – Janpan

+0

$ ('. accordion'). 아코디언 ('option, {active : false}, idx);으로 단일 창을 축소 할 수도 있습니다. - 여기서 'idx'는 0부터 시작하는 창 번호입니다. – jomofrodo

0

: 그래서, 붕괴 모든 아코디언 사용

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