score:1

Accepted answer

$.each() returns an object, not a HTML string which can be appended. To fix you issue you can change the logic to use map() to build a HTML string, something like this:

let html = this.tagli.map(function(o) { 
  return '<div class="col-md-3"><div class="panel panel-default taglio"><div class="panel-body">' + o.importo + '</div></div></div>';
});
let $row = $('<div class="row" />').html(html);

$('<div class="col-md-3"><div class="panel panel-default add"><div class="panel-body text-center">+</div>').appendTo('#someElement');

$('#someElement').on('click', '.panel-body', function() {
  console.log('element clicked');
});

$('#modalAdd').modal()

Note that because there's so much HTML in the JS you may want to instead look at creating hidden template elements in the DOM which you clone() and amend in your loop before adding to the DOM.


Related Query

More Query from same tag