2013-04-23 3 views
9

Ich möchte im Grunde einige divs minimieren. Anstatt "-" und "+" zu verwenden, möchte ich einige Symbole (von font-awesome) verwenden, um die divs zu minimieren und zu maximieren.Minimiere/maximiere Divs mit jQuery

Meine Frage dazu; Wie kann ich die Klassen der Symbole in diesen Code einfügen? Ich habe versucht, den .html Teil durch .attr zu ersetzen, aber das hat nicht funktioniert.

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

Vielen Dank.

Update:

Vielen Dank für Ihre Hilfe bisher. Aber der Geschwister Teil passt mir nicht wirklich, weil .widget-content nicht einer der Schaltfläche ist.

Also zusammenzufassen; Wenn ich ein Widget minimieren und auf die Schaltfläche drücken möchte, minimieren alle Widgets mit der Klasse .widget-content.

Dies ist ein Stück meiner HTML

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

Und der JavaScript Teil:

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

Antwort

8

Sagen Sie bitte .btn-minimize in CSS das Minus-Symbol geben. Sie geben auch .btn-minimize.btn-plus das Plus-Symbol. Ihr Javascript kann dann wie folgt aussehen:

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

Hier ist ein Beispiel auf JSFiddle: http://jsfiddle.net/uzmjq/

+0

Danke Jungs. Ausgezeichnet ausgearbeitet! –

+1

Ich habe deine Code-Teile benutzt und es hilft mir sehr. Aber jetzt habe ich mit dem folgenden Problem gekämpft. Ich habe eine Seite erstellt, wo ich verschiedene Widgets (Diagramme z. B.) präsentieren. Für diese Widgets habe ich mehr oder weniger die gleichen Divs und Klassen als Basis verwendet. Ich habe die Klasse .widget-Inhalt mehrmals in den verschiedenen Divs verwendet. Wenn ich also ein bestimmtes Div minimieren möchte, minimieren alle Divs, in denen ich die Klasse .widget-content verwendet habe. Wie kann ich dieses Problem lösen? –

+0

Sagen wir, dass Sie den Button und das 'widget-content'-div in dasselbe Wrapping-div setzen. In diesem div gibt es nichts anderes. Sie können dann die dritte Zeile meines mitgelieferten Javascript wie folgt ändern: '$ (this) .siblings ('. Widget-content'). SlideToggle();' –

0

Sie CSS verwenden können, um die Symbole/Symbole als Hintergrundbilder anwenden, dann nur noch eine separate CSS-Klasse, die das enthält andere Symbole die und dann nur diese Klasse im Element umschalten.

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(); 
});