Welcome to the Treehouse Community
Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.
Looking to learn something new?
Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.
Start your free trialSeth Warner
5,348 PointsCan someone tell me if Im correct, I got a little lost towards the end..
He lost me completely right when he finished with the CSS. I understood everything he did in the CSS but when he started with "if" I was lost. So let me explain what I think is going on with everything.
By looking at the code; we are appending $select to the menu class. The $option variable is appended to the $select variable.
The $option variable is wrapping each of the menus attributes in option tags. The $option tags values are the menu classes attributes values and the option tags texts are the menu classes attributes texts.
We are appending the $button variable, thats just a button with the word go in it, to the menu class as well.
In CSS we are technically showing both the drop down and nav bar at the same time. CSS will hide one or the other depending on what screen size is being used. If it's out of the specified range, in our case this would be the iPhone, it would chose to hide the smaller media query out of the two. If it is small then it would choose to hide the larger, in our car the regular webpage nav bar out of the two.
What on EARTH went on in the part 3 video?! lol please help me..I have NO idea what this is...
if$($anchor.parent.hasclass("selected")) {
$option.prop("selected", true);
var $select = $("<select></select>");
$(#menu a).append($select);
$("#menu").each(function(){
var $anchor = $(this);
var $option = $("<option></option>");
if$($anchor.parent.hasclass("selected")) {
$option.prop("selected", true);
}
$option.val($anchor.attr("href"));
$option.text($anchor.text());
$select.append($option);
var $button = $(<button>Go</button>)
$("menu a").append($button);
$button.click(function(){
window.location = $select.val();
})
})
2 Answers
John Coolidge
12,614 PointsHello Seth,
Given the following code:
if ($anchor.parent.hasclass("selected")) {
$option.prop("selected", true);
}
If the link's parent has the class "selected", then the option's property will be changed to selected. (You can view this in the HTML with the Chrome Dev Tools). When an option's "selected" property is true, this means that when the new page loads, the About page, for example, then when you look up at the menu on your iPhone, you will see that the menu page, in this case, the About page, and the option in the select menu will be the same. I can tell what page I'm on without ever looking at the page's content, because the select menu will show me which page I'm on. If I'm on the About page, "About" will be the option that I can see in the menu. If I'm on the Home page, "Home" will be the option that I can see in the menu.
I hope that helps answer your question. If I've missed something, please respond and I'll try to clarify.
John
jason chan
31,009 Points var $button = $("<button>Go</button>")
You forgot quotes.
Seth Warner
5,348 PointsSeth Warner
5,348 PointsAwesome @John Coolidge That dose help. I ended up figuring it out a day or so ago but running through your information did give me more clarification, much appreciated!
Seth