Reputation: 71
I have the following JS code and I cannot get specified div
look using appendTo
.
How I can fix this code to get like in the result below?
$(function(){
var imagesPreview = function(input, placeToInsertImagePreview) {
if (input.files) {
var filesAmount = input.files.length;
for (i = 0; i < filesAmount; i++) {
var reader = new FileReader();
reader.onload = function(event) {
$($.parseHTML('<div class="r_img_con">' + ('<img>'))).attr('src', event.target.result).appendTo(placeToInsertImagePreview);
$($.parseHTML('<div class="r_img">')).appendTo(placeToInsertImagePreview);
}
reader.readAsDataURL(input.files[i]);
}
}
};
$('#gallery-photo-add').on('change', function() {
imagesPreview(this, 'div.al_output_image');
});
});
Test
<input type="file" name='upload' class="upload" accept="image/*" id="gallery-photo-add" multiple/>
<div class="al_output_image"></div>
Currently I'm getting:
<div class="r_img_con" src="data:image/...">
<img>
</img>
</div>
<div class="r_img"></div>
I'm trying to get:
<div class="r_img_con">
<img src="data:image/...">
<div class="r_img"></div>
</div>
Upvotes: 2
Views: 79
Reputation: 468
I don't even get why use parseHTML() for this task...
I made the solution a little verbose for clarity purposes.
...
reader.onload = function(event) {
var $firstDiv = $('<div/>',{
class: 'r_img_con',
});
var $img = $('<img/>', {
src: event.target.result,
});
var $subDiv = $('<div/>', {
class: 'r_img',
});
$firstDiv.append($img).append($subDiv).appendTo(placeToInsertImagePreview);
}
...
Upvotes: 1