Solved

slideToggle once on first page load, not again

Posted on 2012-03-30
4
1,067 Views
Last Modified: 2012-04-04
I have two DIVs on my page:

<div id="main">This shows all the time</div>
<div id="expanded">This shows when toggled open</div>

Open in new window


My related CSS is:

#main
{
	background: #000099;
	color: #FFF;
	width: 960px;
	height: 60px;
	margin-top: 20px;
}
#expanded
{
	background: #FFF;
	width: 958px;
	height: 300px;
	border: 1px solid #000099;
	display: none;
}

Open in new window


What I want is for my page to load and display the main div, then slowly toggleSlide the expanded div, wait a few seconds, toggleSlide the expanded div closed again, and then after that point, the user can click on the main div to re-expand it. I HAVE this piece working using the following javascript:

<script type="text/javascript">
	$(document).ready(function () {
		$('#expanded').delay(1000).slideToggle(1400); 
		$('#expanded').delay(5000).slideToggle(1000);

		$("#main").click(function () {
			$(this).next("#expanded").slideToggle(1000); 
		});
	});
</script>

Open in new window


The part I'm unsure how to do is that I only one the automatic slideToggle to happen the first time the user comes to the page (the homepage) if they're browsing around the site and come back to the homepage again, I don't want it to slideToggle automatically every single time. So I'm thinking I need to set a cookie or session variable...? How would I do something like this? It would be OK if they left the site and came back later and it automatically did the slideToggle again, but not on a single session visiting the site.
0
Comment
Question by:mandi224
[X]
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
  • 3
4 Comments
 
LVL 4

Assisted Solution

by:elliottbenzle
elliottbenzle earned 500 total points
ID: 37787207
You'll need to set a cookie which sets when the home page is loaded, and then check for it when the user returns.

http://www.w3schools.com/js/js_cookies.asp
0
 

Author Comment

by:mandi224
ID: 37787859
Ok thanks for pointing me in the right direction. I decided to use jquery.cookie.js

I modified my code to look like this:

<script type="text/javascript">
	$(document).ready(function () {
		$('#expanded').delay(1000).slideToggle(1500);
		$('#expanded').delay(5000).slideToggle(1500); 
		$.cookie("mypromo", "true", { expires: 2 }); 

		$("#main").click(function () {
			$(this).next("#expanded").slideToggle(1000);
		});
	});
</script>

Open in new window


This works, and is setting the cookie properly, however, I'm unsure how to check for the cookie. This is what I tried, and it is not working. (Please forgive me; I'm not very good with javascript/jquery.)

<script type="text/javascript">
	$(document).ready(function () {
		if ($.cookie("mypromo") == null) {
			$('#expanded').delay(1000).slideToggle(1500);
			$('#expanded').delay(5000).slideToggle(1500); 
			$.cookie("mypromo", "true", { expires: 2 }); 
		}

		$("#main").click(function () {
			$(this).next("#expanded").slideToggle(1000);
		});
	});
</script>

Open in new window


With this on the page, and my cookies cleared, it doesn't execute the toggle or set the cookie.
0
 

Accepted Solution

by:
mandi224 earned 0 total points
ID: 37787873
Nevermind ... figured it out:

<script type="text/javascript">
	$(document).ready(function () {
		if ($.cookie("mypromo") != "true") {
			$('#expanded').delay(1000).slideToggle(1500);
			$('#expanded').delay(5000).slideToggle(1500); 
			$.cookie("mypromo", "true", { expires: 2 }); 
		}

		$("#main").click(function () {
			$(this).next("#expanded").slideToggle(1000);
		});
	});
</script>
           

Open in new window


This seems to work!
0
 

Author Closing Comment

by:mandi224
ID: 37805144
User pointed me in the right direction but did not provide specific code.
0

Featured Post

Forrester Webinar: xMatters Delivers 261% ROI

Guest speaker Dean Davison, Forrester Principal Consultant, explains how a Fortune 500 communication company using xMatters found these results: Achieved a 261% ROI, Experienced $753,280 in net present value benefits over 3 years and Reduced MTTR by 91% for tier 1 incidents.

Question has a verified solution.

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

In this article you'll learn how to use Ajax calls within your CodeIgniter application. To explain this, I'll illustrate how to implement a simple contact form to allow visitors to send you an email through your web site.
Today, the web development industry is booming, and many people consider it to be their vocation. The question you may be asking yourself is – how do I become a web developer?
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)
The viewer will learn the basics of jQuery including how to code hide show and toggles. 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…

739 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