Solved

Jquery toggle timer auto close

Posted on 2014-09-24
4
1,124 Views
Last Modified: 2014-09-28
I'm using the basic jquery function toggle to click open a sliding menu on a site I'm developing. What I'd like to do is to have the menu appear OPEN when the user comes to the page, but to automatically slide shut (visually) after 5s

As it is now, I created the menu button and when clicked, it opens and closes the div just fine. I actually had the div set to display:none to begin with, which essentially makes the div invisible unless the user clicks the menu button.

But now I'd like to have the menu appear on page-load (as it does when I removed the display:none in the css) but after 5 seconds, auto-slide off the screen just like what happens when a user clicks the menu icon at the top. The menu icon works to toggle it back and forth (as it should) but I don't want the menu to be static unless the user manually clicks the menu icon. The problem is that many won't know how to get the menu to disappear without clicking the button and if I add the auto slide (toggle) to the code after 5s it will visually help them see that it moves.

I tried to add the same DIV that is used in the header div on the page as a button within the menu itself, but it won't display for some reason. I thought maybe it would be a visual "CLOSE" button/img that people could see how to close it without having to use the menu icon in the header.

here's the development page

I'm not sure how to amend the javascript to add a timer function for it to close after 5s. I want it to close after 5s regardless if the user pressed the menu icon to re-open it.
0
Comment
Question by:day6
  • 2
  • 2
4 Comments
 
LVL 1

Expert Comment

by:foxymoron7
ID: 40342963
Have you tried something like:

$(window).load(function(){
$("div.fnav").delay(500).animate({width:'toggle'}); // set div to slide out 5 sec after page load
$("#navimg").click(function () {
    $("div.fnav").animate({width: 'toggle'}).delay(500).animite({width:'toggle'}); // set div to slide out 5 sec after click
});
});

Open in new window

0
 
LVL 1

Author Comment

by:day6
ID: 40347606
foxymoron7 the script definitely slides it out after 5 seconds of page loading, but doesn't autoclose if I've clicked the menu button. It just stays open. Any thoughts? I'll give you credit for this but it would be great to know how to make it autoclose after the menu clicks. I think your timer is based on window .load isn't it?
0
 
LVL 1

Accepted Solution

by:
foxymoron7 earned 500 total points
ID: 40348124
My bad, the .animate() function takes an argument called "complete" which is a function that fires after the animation effect completes.  Put the delayed close in an anonymous function there.  See below.  The number inside delay is the number of milliseconds to wait, so 1000 = 1 sec. The second argument of animate() (400 in this case) is the duratin of the animation in milliseconds.  400 is the default, a higher number means slower.

see http://api.jquery.com/animate/

$(window).load(function(){
$("div.fnav").delay(8000).animate({width:'toggle'}); // set div to slide out 8 sec after page load
$("#navimg").click(function () {
    $("div.fnav").animate({width: 'toggle'}, 400, function(){ $(this).delay(8000).animate({width:'toggle'})}); // set div to slide out 8 sec after click 
	});

Open in new window

0
 
LVL 1

Author Closing Comment

by:day6
ID: 40348585
Nice work!
0

Featured Post

DevOps Toolchain Recommendations

Read this Gartner Research Note and discover how your IT organization can automate and optimize DevOps processes using a toolchain architecture.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

How to build a simple, quick and effective accordion menu using just 15 lines of jQuery and 2 css classes
This article discusses how to create an extensible mechanism for linked drop downs.
In this tutorial viewers will learn how to position items using CSS's three positioning types Create a new HTML document with an internal stylesheet.: Create another div in CSS and name it Absolute : Type "position:absolute;" and "top:10px; left:50p…
The viewer will learn the basics of jQuery, including how to invoke it on a web page. Reference your jQuery libraries: (CODE) Include your new external js/jQuery file: (CODE) Write your first lines of code to setup your site for jQuery.: (CODE)

832 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question