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 trialMartin Bornman
Courses Plus Student 12,662 Points.append button
Help please.I dont know how to do this.
//Prevent spoilerphobes from seeing spoilers
//Solution: Hide spoilers and reveal them through user interaction
//1, Hide spoiler
$(".spoiler span").hide();
//2, Add a button
$(".spoiler").append('<p>Reveal Spoiler!</p>');
//3, When button pressed
//3.1, Show spoiler
//3.2, Get rid of button
<!DOCTYPE html>
<html>
<head>
<title>Star Wars Spoilers</title>
<link rel="stylesheet" href="css/style.css" type="text/css" media="screen" title="no title" charset="utf-8">
</head>
<body>
<img src="img/deathstar.png" />
<p class="spoiler">
<!--Spoiler:-->
<span>Darth Vader is Luke Skywalker's Father! Noooooooooooo!</span>
</p>
<script src="//code.jquery.com/jquery-1.11.0.min.js" type="text/javascript" charset="utf-8"></script>
<script src="js/app.js" type="text/javascript" charset="utf-8"></script>
</body>
</html>
2 Answers
Shawn Ramsey
27,237 Points$(".spoiler").append("<button>Reveal Spoiler!</button>");
Use button instead of paragraphs.
Nico Julian
23,657 PointsHi there,
So since the revealing of the spoiler is dependent on the button being clicked, we use the click event to trigger the action. [http://api.jquery.com/click/]
Inside click's parentheses, we can pass in a function which will contain the instructions to show the spoiler and then remove the button appended in step 2.
$(this) implies the button, since it's what the click method is being called on. In order to target the spoiler span hidden in step 1, the prev() method is used. Since the button was appended, the span is what's now previous to it. Show() can then be chained to prev(). [http://api.jquery.com/prev/]
Last, the button can be removed by just calling remove() on $(this).
I hope that helps, I had a hard time with this one too when I first came across it.
// Prevent spoilerphobes from seeing spoilers
// Solution: Hide spoilers and reveal them through user interaction
//1, Hide spoiler
$(".spoiler span").hide();
//2, Add a button
$(".spoiler").append('<button>Reveal Spoiler!</button>');
//3, When button pressed:
$("button").click( function(){
$(this).prev().show(); // 3.1, Show spoiler
$(this).remove(); // 3.2, Get rid of button
} );
Martin Bornman
Courses Plus Student 12,662 PointsMartin Bornman
Courses Plus Student 12,662 PointsThanks Shawn!!