我有这个jQuery,它允许在按钮的click事件上向表中添加新行,但前提是id
值尚未添加。
var factAgregada = [];
$('#btnAgregarFactura').on("click", function (e) {
e.preventDefault();
// no_factura and fecha_factura comes from a modal window
// it's not relevant to show that part here
var no_factura = $("#no_factura").val(),
fecha_factura = $("#fecha_factura").val(),
html;
console.log(no_factura);
console.log(factAgregada.indexOf(no_factura));
if (factAgregada.indexOf(no_factura) >= -1) {
html = '<tr>';
html += '<td><input type="checkbox" id="' + no_factura + '"></td>';
html += '<td>' + no_factura + '</td>';
html += '<td>' + fecha_factura + '</td>';
html += '</tr>';
$(html).appendTo("#facturaBody");
}
factAgregada.push(no_factura);
});
首次执行时,代码正常,console.log()
输出:
12
-1
所以这是正确的添加行,但在第二次执行时保持相同的值console.log()
从previos值更改为这些:
12
0
所以,不应该添加行但仍然添加到表中并继续执行appendTo()
,那里有什么问题?我没看到什么?
答案 0 :(得分:2)
var factAgregada = [];
$('#btnAgregarFactura').on("click", function (e) {
e.preventDefault();
var no_factura = 10,
fecha_factura = 2,
html;
console.log(no_factura);
console.log(factAgregada.indexOf(no_factura));
if (factAgregada.indexOf(no_factura) == -1) {
html = '<tr>';
html += '<td><input type="checkbox" id="' + no_factura + '"></td>';
html += '<td>' + no_factura + '</td>';
html += '<td>' + fecha_factura + '</td>';
html += '</tr>';
console.log(html);
}
factAgregada.push(no_factura);
});
更改条件检查
答案 1 :(得分:1)
更优雅的写作方式可能是if (!$("#" + no_factura)[0] )
检查是否存在具有id的此类元素,然后才添加...