Первый метод работает, потому что вы создаете строку, содержащую действительный HTML.
Второй пример пытается создать строку из объекта jQuery. Это не будет работать так, как вы ожидаете, потому что он неявно вызывает toString()
для объекта, что приводит к "[Object object]"
, а не HTML.
Обратите внимание, что последний метод, использующий объекты jQuery, может быть выполнен для работы, если вы удалите вызов join()
и добавите сам массив:
var arr = [];
for (var i = 1; i <= 1000; i++) {
var boton = $('<button>', {
'text': i,
'id': 'btn_' + i,
'class': 'btn btn-danger'
})
arr.push(boton);
}
$(function() {
$('button').after(arr);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<button type="button" class="btn btn-primary">Imprimir</button>
Я бы также предложил не создавать инкрементные атрибуты id
для содержимого Dynami c, так как это обычно делает код более сложным, чем он должен быть. Вместо этого используйте общие классы вместе с методами обхода DOM и атрибутами данных. Однако лучший подход будет полностью зависеть от вашего конкретного варианта использования c.