2011-01-13 27 views
8

Theo mặc định, có tiêu đề nội dung để kiểm soát mở rộng/thu gọn. Nhưng trong trường hợp của tôi, tôi cũng có thể mở rộng/thu gọn nội dung của các thành phần khác. Ví dụ:Tôi có thể mở rộng/thu gọn nội dung của JQuery ui Accordion bằng cách nhấp vào một thành phần khác không?

cấu trúc cơ bản của jquery đang 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> 

và bây giờ. Tôi có một yếu tố khác, giống như:

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

cảm ơn bạn rất nhiều !!

Trả lời

5

Bạn có thể sử dụng .activate với sai được chuyển vào để thu gọn tất cả các phần tử theo chương trình. Vì bạn chỉ có một phần tử mở tại một thời điểm, điều này sẽ làm việc để thu gọn bất kỳ phần tử nào đang mở hiển thị liên kết đó. Điều này sẽ chỉ hoạt động nếu bạn có collapsible được đặt thành true.

Bạn có thể chuyển vào yếu tố nào khác mà bạn muốn mở rộng để mở rộng yếu tố đó khi nhấp.

+1

+1, nhưng tùy chọn hiện nay được gọi là 'hoạt động' chỉ – gotqn

9

Collapse accordion tab:

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

Mở rộng tab accordion đầu tiên:

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

Cảm ơn bạn. Bạn đã cứu tôi khỏi không quan trọng xung quanh, và tôi đánh giá rất cao giải pháp của bạn. – Ace

+0

Mẹo này làm việc cho tôi. +1. Tôi chỉ cần thay đổi nó thành: ['$ ('. Accordion'). Accordion ('option', 'active', false);' cho jQuery UI '1.11'] (http://api.jqueryui.com/accordion/# option-active). Cảm ơn! – mhulse

5

tôi để gặp rắc rối khi các accordion sụp đổ/mở rộng sau khi họ đã bước đầu nạp. Để giải quyết vấn đề này, tôi đã sử dụng:

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

... bắt chước nhấp vào vùng tiêu đề và sẽ buộc bật/tắt các lớp kích hoạt.

Cảm thấy giống như một hack, nhưng đó là những gì đã hiệu quả, Tốt nhất.

+0

Theo [bình luận của người dùng này "] (http://stackoverflow.com/a/24591516/456814):" * 'kích hoạt' phương pháp đã không được chấp nhận kể từ jquery ui 1.9 và loại bỏ từ 1.10+. Thêm thông tin về nó và cú pháp mới có thể được tìm thấy tại [Hướng dẫn nâng cấp jQuery UI 1.9] (http://jqueryui.com/upgrade-guide/1.9/#deprecated-activate-method) * "Đó là theo người dùng đó, tôi đã không lấy thời gian để tự mình xem xét vấn đề. –

8

Sau khi cập nhật giao diện người dùng JQuery, không có phương thức "hoạt động" trên accordion. Vì vậy, để sụp đổ tất cả accordions sử dụng:

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

thx dude, điều này đã cứu tôi! – Janpan

+0

Cũng có thể thu gọn một ngăn đơn lẻ với: $ ('. Accordion'). Accordion ('option, {active: false}, idx); - trong đó 'idx' là số cửa sổ của bạn, không dựa trên. – jomofrodo

0

Sử dụng Bootstrap:

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

sau đó bạn có thể sụp đổ sử dụng:

var elem = $(this).find('.accordionElement'); 
    elem.removeClass("in"); 
    elem.attr("style","height: 0px;"); 
    elem.attr("aria-expanded",false); 
Các vấn đề liên quan