C# 事件中的动态按钮单击句柄

C# 事件中的动态按钮单击句柄,c#,javascript,jquery,C#,Javascript,Jquery,下图显示了该场景,在这里我需要计算动态按钮点击时的价格。(批发价*数量=总物品价格) Firebug中显示的错误为: txtId未定义 在这里,我尝试使用javascript来实现这一点 $('#pick').click(function () { this.disabled = true; var $option = $('#select-product option'); var table = $('<table border="0

下图显示了该场景,在这里我需要计算动态按钮点击时的价格。(批发价*数量=总物品价格)

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;

    }
$('#拾取')。单击(函数(){
this.disabled=true;
var$option=$(“#选择产品选项”);
var table=$('itemname零售价批发价quantitycalculatetotal Item Price')。addClass('product-table');
var i=0;
$option.each(函数(){
调试器;
if($(this.prop('selected')){
变量txtId='txtQty'+i;
变量lblId='lblQty'+i;
var row=$(''+$(this.text()++''+$(this.attr('RetailPrice')++''+$(this.attr('DistritalPrice'))++''+'计算,因为您提到

我需要计算价格时,我的动态按钮点击发生

您必须在事件处理程序上使用

$(document).on('click', '#pick', function () {
   //Your code
}
因为动态生成的按钮没有加载到DOM中,所以需要使用委托


查看差异检查和

HTML: 静止的

小提琴1:

$('button').click(function () {
    alert("I'm clicked");
});
$('body').append('<button>Dynamic</button>'); //button will be append
                                              //click event won't work
$(document).on('click','button', function () {
    alert("I'm clicked");
});
$('body').append('<button>Dynamic</button>'); //Will for buttons created dynamcially
$(“按钮”)。单击(函数(){
警惕(“我被点击”);
});
$('body').append('Dynamic');//按钮将被追加
//单击事件将不起作用
小提琴2:

$('button').click(function () {
    alert("I'm clicked");
});
$('body').append('<button>Dynamic</button>'); //button will be append
                                              //click event won't work
$(document).on('click','button', function () {
    alert("I'm clicked");
});
$('body').append('<button>Dynamic</button>'); //Will for buttons created dynamcially
$(文档)。在('click','button',函数(){
警惕(“我被点击”);
});
$('body').append('Dynamic');//将动态创建按钮

直到错误消息

txtId is not defined
就,

在HTML模板中,您有

var row = '..... onClick="CalcPrice(txtId,$(this).attr(\'WholesalePrice\'),lblId)"> ....'
您将变量“txtId”硬编码到HTML中

这是必须的

onClick="CalcPrice(' + txtID + ',' + $(this).attr(\'WholesalePrice\') + ',' + lblId + '"> ...

如果您的按钮最初未在DOM中加载,但后来又动态添加了这些按钮,请尝试使用.live()。以下是您可以使用的方法:。检查给出的示例。

避免使用
.live()
,因为它的版本已弃用:1.7,已删除:1.9