jQuery show hide sliding panel from left side

Paramasivan

I want a panel to slide from left edge of browser when clicking a button and hide the panel when clicking the same button (toggle).

Html

  <div class="panel">
  </div>

  <a href="javascript:void(0);" class="slider-arrow show">&raquo;</a>

CSS

.panel {
width:300px;
float:left;
height:550px;
background:#d9dada;
position:relative;
left:-300px;

}
.slider-arrow {
padding:5px;
width:10px;
float:left;
background:#d9dada;
font:400 12px Arial, Helvetica, sans-serif;
color:#000;
text-decoration:none;
position:relative;
left:-300px;
}

jquery

$(function(){
$('.slider-arrow.show').click(function(){
    $( ".slider-arrow, .panel" ).animate({
      left: "+=300"
      }, 700, function() {
        // Animation complete.
      });
      $(this).html('&laquo;').removeClass('show').addClass('hide');
});

$('.slider-arrow.hide').click(function(){
    $( ".slider-arrow, .panel" ).animate({
      left: "-=300"
      }, 700, function() {
        // Animation complete.
      });
      $(this).html('&raquo;').removeClass('hide').addClass('show');
});
});

It is showing the panel but not hiding the panel. Any problem with the selectors used?

http://jsfiddle.net/Paramasivan/eHded/1/

Trevor

As others have said with jQuery once the document is initialized its only looking for elements that initially existed. For that reason your .show function was being run every time.

Instead of looking for a click event on .slider-arrow.show you can just look at .slider-arrow and then check for the classes once it has been clicked like in this example.

$(function(){
  $('.slider-arrow').click(function(){
    if($(this).hasClass('show')){
    $( ".slider-arrow, .panel" ).animate({
      left: "+=300"
      }, 700, function() {
        // Animation complete.
      });
      $(this).html('&laquo;').removeClass('show').addClass('hide');
    }
    else {      
    $( ".slider-arrow, .panel" ).animate({
      left: "-=300"
      }, 700, function() {
        // Animation complete.
      });
      $(this).html('&raquo;').removeClass('hide').addClass('show');    
    }
  });
});

http://jsfiddle.net/eHded/4/

Collected from the Internet

Please contact [email protected] to delete if infringement.

edited at
0

Comments

0 comments
Login to comment

Related

From Dev

Hide/Show on left side using jQuery

From Dev

Horizontal Sliding Panel with relative postion handle show/hide - jQuery

From Dev

show and hide div from right to left in jquery

From Dev

show and hide div from right to left in jquery

From Dev

Hide/Show from left

From Dev

sliding effect from both side to center in jquery

From Dev

Sliding from right to left vertical Menu > Jquery

From Dev

C#/java android sliding menu from left side

From Dev

Jquery Show Value on Left Panel when Right Panel li is clicked

From Dev

JQuery .toggle('slide') not sliding it looks more like .show() or .hide()

From Dev

jQuery - Side Sliding Menu

From Dev

making jQuery .show() AND .hide() run side by side with UI effect

From Dev

Show/hide tabs from right to the left

From Dev

How to hide left panel in jquery.mobile.splitview in desktop screen

From Dev

Unable to hide and show panel

From Dev

jQuery sliding panel for multiple instances

From Dev

How do I hide/show a <panel> using jquery?

From Dev

Hide North Panel if Nothing to Show with JQuery UI Layout

From Dev

jQuery : Toggle Sliding A div from left to right over another div

From Dev

Sliding a div from right to left via jQuery or CSS3

From Dev

Sliding a div from right to left via jQuery or CSS3

From Dev

jQuery Slide Down - Sliding from Top-Left for Image

From Dev

jquery fade out sliding left

From Dev

Jquery sliding left menu with icon

From Dev

jquery fade out sliding left

From Dev

Show elements from side of page with jquery as scrolling

From Dev

Hide and show form (panel) onclick

From Dev

Show / Hide Panel with 1 imagebutton

From Dev

Sliding a div from right > to left <

Related Related

HotTag

Archive