how is it possible to make html divs inline each time a new element is created using the .after() function in js , I current have a button that creates a new div, only problem is it creates it under the first div in my container and continues like this in a block layout rather than inline
js
$("button.add_item").on("click", function() {
let item_count = $('.container .compare_card').length;
$(".row:last").after(
` <div class="row form_row">
<div class="col mb-4">
<h5>Item</h5>
<div class="card form_card">
<div class="card-body compare_cardbody">
<textarea name="ingredients" id="" cols="30" rows="10"></textarea>
</div>
</div>
</div>
</div>
`
);
})
})
html
<div class="container">
<div class="row row-cols-1 row-cols-md-2 mx-auto">
<form action="{% url 'compare_ingredients' %}" method="post" id="compare">
{% csrf_token %}
<div class="row form_row">
<div class="col mb-4">
<h5>Item 1</h5>
<div class="card form_card">
<div class="card-body compare_cardbody">
<textarea name="ingredients" id="" cols="30" rows="10"></textarea>
</div>
</div>
</div>
<div class="col mb-4">
<h5>Item 2</h5>
<div class="card form_card">
<div class="card-body compare_cardbody">
<textarea name="ingredients" id="" cols="30" rows="10"></textarea>
</div>
</div>
</div>
</div>
<br>
<button type="submit" class="btn btn-info">Submit</button>
</form>
</div>
</div>
looks like this you can see the bottom 2 divs are the newly created elements using .after() in js:
Advertisement
Answer
You are adding a new row on each click. If you want a new column, you’ll need to check if you should be appending a column to an existing row or creating a new row and adding to that.
if ($("#compare > .row:last > .col").length === 2)
{
$("#compare").append('<div class="row form_row"></div>');
}
$("#compare > .row:last").append(
`
<div class="col mb-4">
<h5>Item</h5>
<div class="card form_card">
<div class="card-body compare_cardbody">
<textarea name="ingredients" id="" cols="30" rows="10"></textarea>
</div>
</div>
</div>
`
);
})
