Jquery toggle timer auto close

Posted on 2014-09-24
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.
Question by:day6
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 2
  • 2

Expert Comment

ID: 40342963
Have you tried something like:

$("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


Author Comment

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?

Accepted Solution

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.


$("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


Author Closing Comment

ID: 40348585
Nice work!

Featured Post

Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

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

Introduction JSON is an acronym for JavaScript Object Notation.  It is a text-string data transport mechanism, capable of representing simple or complex data structures in a consistent and easy-to-read manner.  Similar in concept to XML, but more e…
International Data Corporation (IDC) prognosticates that before the current the year gets over disbursing on IT framework products to be sent in cloud environs will be $37.1B.
In this tutorial viewers will learn how to style a decorative dropcap for the first letter in a paragraph using CSS. In CSS, create a new paragraph class by typing "p.fancy": Then, to style only the first letter of the first sentence, include the ps…
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)

749 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