Вместо того, чтобы смешивать связывание событий keyup с вашей строкой HTML, рассмотрите более ориентированный на jQuery подход с использованием jQuery для привязки обработчиков событий, выполнения запросов DOM и т. Д.
Так, например, вы можете сделать следующее:
var count = 1;
$("#add").click(function() {
// This html string is different from your original
var html = "<div id='ticket" + count + "'><div class='add-new-ticket' id='box-ticket'><div class='ticket-box'><div class='row'><div class='col-md-3 col-sm-3'><input type='text' class='form-control text-boxes monto cantidad' placeholder='Amount' id='cantidad'><span class='bar'></span></div><div class='col-md-3 col-sm-3'><input type='text' class='form-control text-boxes monto precio' placeholder='Price' id='precio'><span class='bar'></span></div><div class='col-md-3 col-sm-3 icon-tk'><a href='javascript: void(0)'><span class='glyphicon glyphicon-trash icon remove-ticket' style='margin:5px; color: black;'></span></a></div></div></div><div class='ticket-footer text'><div class='row cont-foot-tk'><div class='col-md-2 col-sm-2'><p>Price: <span class='dollar' style='color: #d9534f;'>$ </span><span style='color: #d9534f;' class='Costo' id='Costo'> 0</span></p></div><div class='col-md-3 col-sm-3 com-cliente'><p>Comision:<span class='dollar' style='color: #d9534f;'>$ </span><span style='color: #d9534f;' class='Comision' id='Comision'> 0</span></p></div><div class='col-md-2 col-sm-2 recibir-cliente'><p>You recibe: <span class='dollar' style='color: #d9534f;'>$ </span><span style='color: #d9534f;' class='Recibir' id='Recibir'> 0</span></p></div><div class='col-md-3 col-sm-3 total-cliente'><p class='back-text'> To pay: <span class='dollar' style='color: white;'>$ </span><span class='totalPagar' id='totalPagar'> 0</span></p></div></div></div></div></div></div>";
var form = $(html);
// Create an instance of calcularPrecio with `this` being the form object
var formCalcularPrecio = calcularPrecio.bind(form);
$("#addresses").append(form);
$('.cantidad', form).keyup(formCalcularPrecio); // Add keyup handler like so
$('.precio', form).keyup(formCalcularPrecio); // Add keyup handler like so
count++;
});
А затем обновите свой метод calcularPercio следующим образом:
function calcularPrecio() {
var valor = "";
// Use jquery to get inputs for this form
var precio = parseFloat($(".precio", this).val());
var cantidad = parseFloat($(".cantidad", this).val());
var total = 1;
var comision = 1;
var totalPagar = 1;
var change = false;
$(".monto", this).each(function() {
if (!isNaN(parseFloat($(this).val()))) {
change = true;
total = precio * cantidad;
comision = precio / 10;
valor = precio;
totalPagar = parseFloat(precio) + comision;
}
});
total = (change) ? total : 0;
comision = (change) ? comision : 0;
totalPagar = (change) ? totalPagar : 0;
// Use jquery to set html for this form
$('.Costo', this).html(precio);
$('.Comision', this).html(comision);
$('.Recibir', this).html(total);
$('.totalPagar', this).html(totalPagar);
}
Для полной рабочей версии см. Этот jsFiddle - надеюсь, это поможет!