2013-04-23 53 views
9

Tôi về cơ bản muốn giảm thiểu một số div. Thay vì sử dụng "-" và "+", tôi muốn sử dụng một số biểu tượng (từ font-awesome) để giảm thiểu và tối đa hóa div's.Thu nhỏ/Tối đa hóa div với jQuery

Câu hỏi của tôi liên quan đến vấn đề này; làm thế nào tôi có thể chèn các lớp của các biểu tượng trong đoạn mã này? Tôi đã thử bằng cách thay thế phần .html bằng .attr, nhưng điều đó không thành công.

<script> 
    $(".btn-minimize").click(function(){ 
    if($(this).html() == "-"){ 
     $(this).html("+"); 
    } 
    else{ 
     $(this).html("-"); 
    } 
    $(".widget-content").slideToggle(); 
    }); 
</script> 

Cảm ơn rất nhiều.

Cập nhật:

Cảm ơn rất nhiều sự giúp đỡ của bạn cho đến thời điểm này. Nhưng phần anh chị em không thực sự phù hợp với tôi bởi vì .widget-content không phải là một trong các nút.

Vì vậy, để tóm tắt; khi tôi muốn giảm thiểu một tiện ích và nhấn nút, tất cả các tiện ích con với mức độ tối thiểu của lớp là .widget-content.

Đây là một đoạn mã HTML của tôi

<!--widget-1-2--> 
    <section class="widget span3"> 
     <!--front--> 
     <div id="front" class="widget-1-2 flip"> 
     <div class="widget-header"> 
      <h2>Monthly Statistics</h2> 
      <div class="btn-group pull-right"> 
       <button id="btn-front" class="btn"><i class="icon-cogs icon-white" alt="settings"></i></button> 
       <button class="btn btn-minimize"><i class="icon-chevron-up icon-white" alt="minimize"></i></button> 
       <button class="btn btn-close"><i class="icon-remove icon-white" alt="close"></i></button> 
      </div> 
     </div> 
     <div class="widget-content"><p>Dit is de voorkant.</p></div> 
    </div><!--/front--> 
</section> 

Và phần JavaScript:

<script> 
    $(".icon-chevron-up").click(function(){ 
     $(this).toggleClass("icon-chevron-down"); 
     $(".widget-content").slideToggle(); 
    }); 
</script> 

Trả lời

8

Giả sử bạn cung cấp cho .btn-minimize biểu tượng dấu trừ trong CSS. Bạn cũng cung cấp cho .btn-minimize.btn-plus biểu tượng dấu cộng. sau đó javascript của bạn có thể trông như thế này:

$(".btn-minimize").click(function(){ 
    $(this).toggleClass('btn-plus'); 
    $(".widget-content").slideToggle(); 
}); 

Dưới đây là một ví dụ về JSFiddle: http://jsfiddle.net/uzmjq/

+0

Thanks guys. Làm việc ra tốt thôi! –

+1

Tôi đã sử dụng các đoạn mã của bạn và nó giúp tôi rất nhiều. Nhưng bây giờ tôi đã đấu tranh với vấn đề sau. Tôi đã tạo trang nơi tôi trưng bày các tiện ích khác nhau (biểu đồ, ví dụ:). Đối với những vật dụng tôi đã sử dụng nhiều hơn hoặc ít hơn cùng một div và các lớp học như một cơ sở. Tôi đã sử dụng lớp .widget-content nhiều lần trong các div khác nhau. Vì vậy, khi tôi giảm thiểu một div cụ thể, tất cả các div của nơi mà tôi đã sử dụng lớp .widget-content giảm thiểu. Làm cách nào tôi có thể giải quyết vấn đề này? –

+0

Giả sử bạn đặt nút và 'tiện ích con-nội dung'-div trong cùng một div gói. Trong div đó, không có gì khác cư trú. Sau đó bạn có thể sửa đổi dòng thứ ba của javascript được cung cấp của tôi như sau: '$ (this) .siblings ('. Widget-content'). SlideToggle();' –

0

Bạn có thể sử dụng CSS để áp dụng những biểu tượng/biểu tượng như hình ảnh nền, sau đó chỉ cần có một lớp CSS riêng biệt chứa các các biểu tượng khác và sau đó chỉ chuyển đổi lớp này trong phần tử.

CSS

.btn-minimize { 
    background-image: url("/path/to/icon"); 
} 

.maximize { 
    background-image: url("/path/to/another/icon"); 
} 

jQuery

$(".btn-minimize").click(function() { 
    $(this).toggleClass("maximize"); 
    $(".widget-content").slideToggle(); 
});