在下图中显示了该场景,我需要在动态按钮点击时计算价格。(批发价格*数量= Toal商品价格)
Firebug中的错误显示是:
未定义txtId
我尝试使用javascript进行此操作。
$('#pick').click(function () {
this.disabled = true;
var $option = $('#select-product option');
var table = $('<table border="0" class="table table-bordered"><th>ItemName</th><th>Retail Price</th><th>Wholesale Price</th><th>Quantity</th><th>Calculate</th><th>Total Item Price</th></table>').addClass('product-table');
var i=0;
$option.each(function () {
debugger;
if ($(this).prop('selected')) {
var txtId = 'txtQty' + i;
var lblId = 'lblQty' + i;
var row = $('<tr><td>' + $(this).text() + '</td><td>' + $(this).attr('RetailPrice') + '</td><td>' + $(this).attr('WholesalePrice') + '</td><td>' + '<input type="text" id="' + txtId + '">' + '</td><td> <button type="button" class="btn btn-warning btn-xs" onClick="CalcPrice(txtId,$(this).attr(\'WholesalePrice\'),lblId)">Calculate</button></td><td><label for="tempprice" id="lblQty' + i + '></label></td></tr>');
table.append(row);
i++;
}
});
$('#product-load-tbl').append(table);
});
function CalcPrice(txtId,prc,lblId) {
debugger;
}
答案 0 :(得分:1)
既然你提到了
我需要在动态按钮点击时计算价格
您必须使用事件处理程序,如
$(document).on('click', '#pick', function () {
//Your code
}
因为动态生成的按钮没有加载到DOM中,所以你需要使用委托。
<强> HTML:强> 静态
<强> Fiddle1:强>
$('button').click(function () {
alert("I'm clicked");
});
$('body').append('<button>Dynamic</button>'); //button will be append
//click event won't work
<强> Fiddle2:强>
$(document).on('click','button', function () {
alert("I'm clicked");
});
$('body').append('<button>Dynamic</button>'); //Will for buttons created dynamcially
答案 1 :(得分:0)
至于错误消息
txtId is not defined
关注,
在HTML模板中,您有
var row = '..... onClick="CalcPrice(txtId,$(this).attr(\'WholesalePrice\'),lblId)"> ....'
您将变量“txtId”硬编码到HTML中。
需要
onClick="CalcPrice(' + txtID + ',' + $(this).attr(\'WholesalePrice\') + ',' + lblId + '"> ...
答案 2 :(得分:0)
如果您的按钮最初未在DOM中加载,之后您已动态添加这些按钮,请尝试使用.live()。您可以通过以下方式执行此操作:https://api.jquery.com/live/。查看给出的示例。