Reputation: 27
i am writing a code in jquery to append image in div after ajax success but not working correctly
for (var i = 0; i < data.length; i++) {
if(i%3===0 || i===0){
$('#user_media').append('<div id="get_img" class="row mb-2 p-2"></div>');
};
var type = getFileExtension(data[i]);
$('#get_img').append('<div id="div_img" class="col-sm ml-0"></div>');
if (type == 'jpg' || type == 'jpeg' || type == 'png' || type == 'gif') {
$('#div_img').append('<img id="media_img" style="" src="'+data[i]+'" alt="..." class="img-thumbnail">');
}
}
this what i get in html
<div id="get_img" class="row mb-2 p-2"><div id="div_img" class="col-sm ml-0">
<img id="media_img" style="" src="uploads/post-images/aomps1.jpg" alt="..." class="img-thumbnail">
<img id="media_img" style="" src="uploads/post-images/sj7db92522582_2886075474817029_8215339746444967936_o.jpg" alt="..." class="img-thumbnail">
<img id="media_img" style="" src="uploads/post-images/4v5z8Computing-feat.jpg" alt="..." class="img-thumbnail">
<img id="media_img" style="" src="uploads/post-images/5cteyimages sport.jpg" alt="..." class="img-thumbnail">
<img id="media_img" style="" src="uploads/post-images/z20f3Hydrangeas.jpg" alt="..." class="img-thumbnail">
<img id="media_img" style="" src="uploads/post-images/1e3jfLighthouse.jpg" alt="..." class="img-thumbnail"><img id="media_img" style="" src="uploads/post-images/h23qoHydrangeas.jpg" alt="..." class="img-thumbnail">
<img id="media_img" style="" src="uploads/post-images/wz53xc8fdf17fde068bbefd76aab75334d401.jpg" alt="..." class="img-thumbnail">
<img id="media_img" style="" src="uploads/post-images/s8d1gActresses-With-Killer-Shape-3-1024x527.jpg" alt="..." class="img-thumbnail">
<img id="media_img" style="" src="uploads/post-images/bija0imageslaptop boy.jpg" alt="..." class="img-thumbnail">
</div>
<div id="div_img" class="col-sm ml-0"></div>
<div id="div_img" class="col-sm ml-0"></div>
<div id="div_img" class="col-sm ml-0"></div>
<div id="div_img" class="col-sm ml-0"></div>
<div id="div_img" class="col-sm ml-0"></div>
<div id="div_img" class="col-sm ml-0"></div>
<div id="div_img" class="col-sm ml-0"></div>
<div id="div_img" class="col-sm ml-0"></div>
<div id="div_img" class="col-sm ml-0"></div>
but i what i expected is something like this
<div class="row mb-2">
<div class="col-sm ml-0">
<img src="http://localhost/lasu/img/user-profile.png" alt="..." class="img-thumbnail m-0">
</div>
<div class="col-sm ml-0">
<img src="http://localhost/lasu/img/user-profile.png" alt="..." class="img-thumbnail m-0">
</div>
<div class="col-sm ml-0">
<img src="http://localhost/lasu/img/user-profile.png" alt="..." class="img-thumbnail m-0">
</div>
</div>
<div class="row mb-2">
<div class="col-sm ml-0">
<img src="http://localhost/lasu/img/user-profile.png" alt="..." class="img-thumbnail m-0">
</div>
<div class="col-sm ml-0">
<img src="http://localhost/lasu/img/user-profile.png" alt="..." class="img-thumbnail m-0">
</div>
<div class="col-sm ml-0">
<img src="http://localhost/lasu/img/user-profile.png" alt="..." class="img-thumbnail m-0">
</div>
</div>
would be really glad if some one can assist me on this thanks.
you people said i should make ID unique tried this not working
for (var i = 0; i < data.length; i++) {
if(i%3===0 || i===0){
$('#user_media').append('<div id="get_img'+i+'" class="row mb-2 p-2">'); // Open the container for 3 elmts
};
var type = getFileExtension(data[i]);
$('#get_img'+i).append('<div id="div_img'+i+'" class="col-sm ml-0">');
if (type == 'jpg' || type == 'jpeg' || type == 'png' || type == 'gif') {
$('#div_img'+i+'').append('<img style="" src="'+data[i]+'" alt="..." class="img-thumbnail">');
}
$('#get_img'+i).append('</div>'); // close "col-sm ml-0"
if(i%3===0 || i===0){
$('#user_media').append('</div>'); // close "row mb-2 p-2"
};
}
i appreciate guys but can someone help with how to iterate the '' tag 3 time without starting over and creating another div
Upvotes: 0
Views: 207
Reputation: 9308
As others have already pointed out, your first problem is that the id
s must be unique. To create the structure you're looking for, you must close the <div>
tags in the right place (see my comments below).
Assuming everything should go inside the #user_media
element:
for (var i = 0; i < data.length; i++) {
if(i%3===0 || i===0){
$('#user_media').append('<div class="row mb-2 p-2">'); // Open the container for 3 elmts
};
// Build the div for a single img:
var col = '<div class="col-sm ml-0">';
var type = getFileExtension(data[i]);
if (type == 'jpg' || type == 'jpeg' || type == 'png' || type == 'gif') {
col += '<img style="" src="'+data[i]+'" alt="..." class="img-thumbnail">';
}
col += '</div>'; // close "col-sm ml-0"
$('#user_media').append(col);
if(i%3===0 || i===0){
$('#user_media').append('</div>'); // close "row mb-2 p-2"
};
}
This is not the most efficient way to do this, but I did it this way because it involves the least changes to your original code.
Upvotes: 1