2016-10-19 2 views
2

Ich habe mehrere Sidepanels mit mehreren Tasten auf meiner Seite verknüpft.mehrere Sidepanels Übergang Javascript

Grundsätzlich, wenn ich auf eine Schaltfläche klicke, sollte ein Panel geöffnet werden und wenn ich auf die zweite Schaltfläche klicke, sollte das erste Panel schließen und das zweite Panel sollte geöffnet werden.

Ich habe 9 solche Panels.

enter image description here

Derzeit jQuery verwenden, es zu erreichen auch das ist, wie ich die Seitenverkleidung verwendet https://codyhouse.co/demo/slide-in-panel/index.html

Wenn jemand es wäre toll helfen kann.

<div class="cd-panel from-right"> 
       <header class="cd-panel-header"> 
        <a href="#0" class="cd-panel-close">Close</a> 
       </header> 
       <div class="cd-panel-container"> 
Content 
     </div> 
    </div> 

jQuery(document).ready(function($){ 
    //open the lateral panel 
    $('.cd-btn').on('click', function(event){ 
     event.preventDefault(); 
     $('.cd-panel').addClass('is-visible'); 
    }); 
    //close the lateral panel 
    $('.cd-panel').on('click', function(event){ 
     if($(event.target).is('.cd-panel') || $(event.target).is('.cd-panel-close')) { 
      $('.cd-panel').removeClass('is-visible'); 
      event.preventDefault(); 
     } 
    }); 
}); 

Knopf

<i class="glyphicon glyphicon-plus-sign cd-btn" id="nvv-i"></i> 
+1

Wir müssen etwas Code sehen. Insbesondere das HTML für die Panels und die Javascript/Jquery, die sie öffnet. – user1289451

+0

Warum nicht das gleiche Panel wiederverwenden und den Inhalt abhängig von der Schaltfläche einstellen? – cycopepe

+0

Ja sicher, momentan habe ich das selbe Panel wieder verwendet und den Inhalt eingestellt. Aber wenn ich auf die Schaltfläche klicke, bleiben alle Seitenpanels geöffnet. Sie schließen nicht automatisch. @ cycopepe –

Antwort

0

die anderen Seitenteil Klassen Durch das Hinzufügen der Klasse $ ('cD-Panel-a.) removeClass (' ist sichtbare') zu entfernen.

jQuery(document).ready(function($){ 
    //open the lateral panel 
    $('.cd-btn').on('click', function(event){ 
     event.preventDefault(); 
     $('.cd-panel').addClass('is-visible'); 
     $('.cd-panel-a').removeClass('is-visible');  
    }); 
    //close the lateral panel 
    $('.cd-panel').on('click', function(event){ 
     if($(event.target).is('.cd-panel') || $(event.target).is('.cd-panel-close')) { 
      $('.cd-panel').removeClass('is-visible'); 
      event.preventDefault(); 
     } 
    }); 
}); 
0

Sie diese mit einigen jQuery erreichen kann, ich habe versucht, möglichst dynamisch die unten zu schreiben zu sein, die Daten- Verwendung * Attribut.

Ich habe den Code aus dem Artikel entnommen Sie zur Verfügung gestellt, aber sieht aus wie ein Teil der CSS wird aus diesem Artikel fehlt ..

Edit: Mit dem Code, den Sie zur Verfügung gestellt haben ...

jQuery(document).ready(function($) { 
 
    //open the lateral panel 
 
    $('.cd-btn').on('click', function(event) { 
 
    \t // close any previously opened panels 
 
    \t $('.cd-panel').removeClass('is-visible'); 
 
    
 
    \t // get the number of the panel to show from the data-panel attribute on the button 
 
    \t var panelToShow = $(this).data('panel'); 
 
    
 
    event.preventDefault(); 
 
    // add the is-visible class to the panel with the data-panel attribute value matching that of the button 
 
    $('.cd-panel[data-panel="' + panelToShow + '"]').addClass('is-visible'); 
 
    }); 
 
    //close the lateral panel 
 
    $('.cd-panel').on('click', function(event) { 
 
    if ($(event.target).is('.cd-panel') || $(event.target).is('.cd-panel-close')) { 
 
     $('.cd-panel').removeClass('is-visible'); 
 
     event.preventDefault(); 
 
    } 
 
    }); 
 
});
.cd-panel { 
 
    visibility: hidden 
 
} 
 

 
.is-visible { 
 
    visibility: visible 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="cd-panel from-right" data-panel="1"> 
 
    <header class="cd-panel-header"> 
 
    <a href="#0" class="cd-panel-close">Close</a> 
 
    </header> 
 
    <div class="cd-panel-container"> 
 
    Panel 1 
 
    </div> 
 
</div> 
 

 
<div class="cd-panel from-right" data-panel="2"> 
 
    <header class="cd-panel-header"> 
 
    <a href="#0" class="cd-panel-close">Close</a> 
 
    </header> 
 
    <div class="cd-panel-container"> 
 
    Panel 2 
 
    </div> 
 
</div> 
 

 
<i class="glyphicon glyphicon-plus-sign cd-btn" id="nvv-i" data-panel="1">Show Panel 1</i><br /> 
 
<i class="glyphicon glyphicon-plus-sign cd-btn" id="nvv-i" data-panel="2">Show Panel 2</i>

+0

ich glaube, Sie Daten-Panel hinzugefügt haben Steuern =“ 1 " –

+0

Ich denke, das sollte mir bei der Lösung helfen. Lass es mich schnell versuchen und zurückkommen. Danke @Ant –

+0

Überprüfen Sie diese JsFiddle mit dem Code, den Sie in Ihrer Frage zur Verfügung gestellt: https://jsfiddle.net/kevddnc/ – Ant

Verwandte Themen