2013-01-21 19 views
9

Mam przycisk "Menu" po lewej stronie strony i po wybraniu mam element div zawierający elementy menu show. Następnie mam inny przycisk, który można wybrać, aby ukryć menu.jQuery przełączają suwak od lewej do prawej iz powrotem

Idealnie chciałbym, żeby to się wysunęło (od lewej do prawej) iz powrotem, ale nie powiodło się, aby to działało dobrze. Próbowałem używać animacji i SlideToggle, ale żaden nie działa dobrze dla tego, co mam. Jakieś wskazówki?

<div id="cat_icon">Menu</div> 
<div id="categories"> 
    <div CLASS="panel_title">Menu</div> 
    <div CLASS="panel_item"> 
     <template:UserControl id="ucCategories" src="UserControls/ProductCategories.ascx" /> 
    </div> 
</div> 
$('#cat_icon').click(function() { 
    $('#categories').toggle(); 
    $('#cat_icon').hide(); 
}); 
$('.panel_title').click(function() { 
    $('#categories').toggle(); 
    $('#cat_icon').show(); 
}); 
+0

Oto dobry tutorial jak ślizgać http: //www.learningjquery.com/2009/02/slide-elements-in-different-directions – Pete

+0

Kliknięcie na #cat_icon będzie zarówno ukrywać (z przełącznikiem()), jak i #categories oraz #cat_icon, czy jest to zamierzone zachowanie? –

Odpowiedz

12

Zobacz to: Demo

$('#cat_icon,.panel_title').click(function() { 
    $('#categories,#cat_icon').stop().slideToggle('slow'); 
}); 

Update: ślizgać się od lewej do prawej: Demo2

Uwaga: Druga używa jquery-ui także

+0

to slajdy od góry do dołu zamiast od lewej do prawej. – LeeTee

+0

@LeeTee: zobacz zaktualizowaną odpowiedź ... – Anujith

1

Użyj tego ...

$('#cat_icon').click(function() { 
    $('#categories').toggle("slow"); 
    //$('#cat_icon').hide(); 
}); 
$('.panel_title').click(function() { 
    $('#categories').toggle("slow"); 
    //$('#cat_icon').show(); 
}); 

zobaczyć ten Example

życzenia.

+4

ten slajd od góry do dołu zamiast od lewej do prawej – LeeTee

4

Ukryj #categories początkowo

#categories { 
    display: none; 
} 

a następnie, przy użyciu jQuery UI, animowanie Menu powoli

var duration = 'slow'; 

$('#cat_icon').click(function() { 
    $('#cat_icon').hide(duration, function() { 
     $('#categories').show('slide', {direction: 'left'}, duration);}); 
}); 
$('.panel_title').click(function() { 
    $('#categories').hide('slide', {direction: 'left'}, duration, function() { 
     $('#cat_icon').show(duration);}); 
}); 

JSFiddle

Można stosować dowolny czas w milisekundach, a także

var duration = 2000; 

Jeśli chcesz ukryć na class='panel_item' też wybrać zarówno panel_title i panel_item

$('.panel_title,.panel_item').click(function() { 
    $('#categories').hide('slide', {direction: 'left'}, duration, function() { 
     $('#cat_icon').show(duration);}); 
}); 

JSFiddle

+2

ten slajdy od góry do dołu zamiast od lewej do prawej – LeeTee

4

przesuwne z prawej strony:

$('#example').animate({width:'toggle'},350); 

przesuwne z lewej strony:

$('#example').toggle({ direction: "left" }, 1000); 
Powiązane problemy