В этом случае, поскольку HTML, который вы хотите добавить, зависит от содержимого, поступающего с вашего Laravel бэкэнда, было бы гораздо разумнее разделить HTML и JS. Таким образом, создайте HTML в DOM, когда страница загрузится, и скройте его. Затем в JS вы можете клонировать этот HTML и добавить его туда, где он должен быть отображен. Как то так:
$('.add-new-product').on('click', function() {
var $clone = $('#new-product-content > div').clone();
$clone.appendTo('#products-div');
});
#new-product-content {
display: none;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<span class="add-new-product">Add New<i class="fa fa-plus"></i></span>
<div id="products-div"></div>
<div id="new-product-content">
<div class="col-xs-12">
<div class="form-group">
<div class="input-group">
<span class="input-group-addon input-group-addon-small"><i class="sicon-tag-special"></i></span>
<select class="form-control" name="category_id" style="width: 100%">
<option value="">Select Category...</option>
<!--
output your categories here, eg.
@foreach($categories as $category)
<option value="{{ $$category->id }}">{{ $category->name }}</option>
@endforeach
Below is just for demo purposes... -->
<option value="lorem">Lorem</option>
<option value="ipsum">Ipsum</option>
<option value="dolor">Dolor</option>
<option value="sit">Sit</option>
</select>
</div>
</div>
</div>
</div>
Также обратите внимание на использование ненавязчивых обработчиков событий здесь. Использование встроенных обработчиков событий в HTML, таких как onclick
et c., Является плохой практикой, и ее следует по возможности избегать.