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 trialShirley Xie
230 PointsMy caption is not showing up and I believe I followed every step of the video...
Could someone kindly check out my code please? My caption is not showing up and I believe I followed every step of the video... Snapshot: https://w.trhou.se/hn6hu0gu3p
app.js
//Problem: User when clicking on image goes to a dead end
//Solution: Create an overlay with the large image - Lightbox
var $overlay = $("<div id = 'overlay'></div>");
var $image = $('<img>');
var $caption = $('<p></p>');
//Add image to overlay
$overlay.append($image);
// caption
$overlay.append($caption);
// Add overlay
$('body').append($overlay);
//Capture Click event on link around image
$('#imageGallery a').click(function(event){ event.preventDefault();
var imageLocation = $(this).attr('href');
// Update overlay with the image linked in the link
$image.attr('src', imageLocation);
//show overlay
$overlay.show();
//Get child's alt atribute and set caption
var captionText = $(this).children('img').attr('alt');
$overlay.text(captionText); });
//When overlay is clicked
$overlay.click(function(event){
//hide overlay
$overlay.hide(); });
style.css body { font-family: sans-serif; background: #384047; } h1 { color: #fff; text-align: center }
ul { list-style:none; margin: 0 auto; padding: 0; display: block; max-width: 780px; text-align: center; } ul li { display: inline-block; padding: 8px; background:white; margin:10px; } ul li img { display: block; } a { text-decoration: none; } /** Start Coding Here **/
overlay {
background:rgba(0, 0, 0, 0.6); width: 100%; height: 100%; position: absolute; left:0; top: 0; display: none; text-align: center; }
overlay img{
margin-top: 10%; }
overlay p {
color: white; }
3 Answers
Steven Parker
231,269 PointsLine 25 should probably set the caption text.
Instead of:
$overlay.text(captionText);
Line 25 should probably be:
$caption.text(captionText);
Steven Parker
231,269 PointsThe workspace code is a bit different from that shown above.
I found the following lines in app.js in the workspace snapshot:
//Add image to overlay
$overlay.append($image);
// caption
//$overlay.append($caption); <-- this line
// Add overlay
$('body').append($overlay);
The line that would add the caption (line 10) has been commented out. Remove the slashes (//
) to activate it.
Shirley Xie
230 PointsSorry I forked the wrong snapshot, now the link has been updated, I updated all the comments and it still doesn't work.
Shirley Xie
230 PointsWhat I also noticed that is: If I comment out line 25 from js: $overlay.text(captionText); , at least the image overlay worked, but when I uncomment that line, the image doesn't even append to the overlay anymore, it's just the shadow overlay, I am so confused why this is happening...
Shirley Xie
230 PointsShirley Xie
230 PointsThat's right! Thank you so much Steven!