Reputation: 24481
I am using the $.getJSON
function of JQuery to download the urls of some images and I am trying to output them inside a div. I am trying to get the output to look like this:
<a href="the image url (shot.short_url)"><img src="the direct image url (shot.image_teaser_url)" /></a>
However, it is outputting this instead:
<div id="body-wrapper">
<a href="http://drbl.in/300896">[object Object]</a>
<a href="http://drbl.in/298080">[object Object]</a>
<a href="http://drbl.in/290395">[object Object]</a>
<a href="http://drbl.in/290324">[object Object]</a>
<a href="http://drbl.in/268595">[object Object]</a>
<a href="http://drbl.in/265197">[object Object]</a>
<a href="http://drbl.in/256368">[object Object]</a>
<a href="http://drbl.in/252519">[object Object]</a>
<a href="http://drbl.in/242235">[object Object]</a>
<a href="http://drbl.in/241676">[object Object]</a>
</div>
Please can you tell me where I am going wrong in the case out outputting the image?
This is my code:
function work() {
$('#body-wrapper').empty();
$.getJSON("http://dribbble.com/jakekrehel/shots.json?callback=?", function(data){
$.each(data.shots, function(i,shot){
var image = $('<img/>').attr('src', shot.image_teaser_url);
var title = '<a href=\"' + shot.short_url + '\">';
var string = title;
string = string + image;
string = string + '</a>';
$('#body-wrapper').append(string);
});
});
}
Upvotes: 5
Views: 14224
Reputation:
image is a jQuery object and not a String - so appending it to a String will produce [object Object]
Ideally, change everything into an object - e.g.
$('#body-wrapper').append(
$("<a/>",{"href": shot.short_url}).append(
$("<img/>",{"src": shot.image_teaser_url}));
or cheat and do this string = string + image.html();
Either should work
Note: I typed those without syntax checking and there's a LOT of brackets, did my best tho!
Upvotes: 3
Reputation: 164776
Try this within your .each()
callback
// create image
var image = $('<img>').attr('src', shot.image_teaser_url);
// create anchor and append image
var anchor = $('<a>').attr('href', shot.short_url).append(image);
// append anchor to container
$('#body-wrapper').append(anchor);
Upvotes: 1