jquery - 捕获动态添加到 Jquery Datatables 表的输入字段上的更改事件

标签 jquery dom event-handling onchange

我有一个 ajax 调用,它使用以下代码为响应中的每条记录添加一些行到数据表中:

strAppName = data.Application_Name
maintCost = '<input class="maintCostField" appid="' + data.Application_ID + '" type="text" placeholder="$">';

$('#myReport').dataTable().fnAddData([
    strAppName,
    maintCost,
    etc,
    etc
]);

我尝试了以下选择器/事件来捕获对文本框的更改,但它们都没有触发。它们位于 document.ready 部分...

$(".maintCostField").bind('change',function () {
    val = $(this).val();
    app = $(this).attr('appid');
    alert('Updating app# ' + app + ' with ' + val);
});


$(".maintCostField").on('change',function () {
    val = $(this).val();
    app = $(this).attr('appid');
    alert('Updating app# ' + app + ' with ' + val);
});

(我知道这个已被弃用)

$(".maintCostField").live('change',function () {
    val = $(this).val();
    app = $(this).attr('appid');
    alert('Updating app# ' + app + ' with ' + val);
});

我做错了什么?我不明白为什么它与 Click event doesn't work on dynamically generated elements 有什么不同或许多其他...

更新* 我将以下内容添加到数据表的 fnDrawCallback 事件中,现在它可以工作了,只是它执行的次数与屏幕上的表单一样多。

$(".maintCostField").each(function () {
    this.addEventListener("change", function () {
        val = $(this).val();
        app = $(this).attr('appid');
        alert('Updating app# ' + app + ' with ' + val);
    }, true);
});

最佳答案

答案 question实际上是错误的。(他更新了答案!)您必须将事件绑定(bind)到父元素,因为 input 尚不存在才能将事件绑定(bind)到。

$(document).on('change', '.maintCostField', function() { 

FIDDLE

关于jquery - 捕获动态添加到 Jquery Datatables 表的输入字段上的更改事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16225336/

相关文章:

javascript - JQuery Datatables 将复选框设置为选中

javascript - 你能用纯 JavaScript 绑定(bind)到 jQuery 事件吗?

javascript - Select2 显示 ajax 请求错误

javascript - 获取详细信息后动态检查附加到 DOM 的输入框

javascript - JQuery - 如何使按钮滚动到下一个 div,但向上滚动时做出响应

Java GUI 一直挂起

jQuery .load() 函数正在执行我的 <HttpPost()> 操作而不是我的 <HttpGet()>

javascript - 使用 jQuery 将输入附加到 DOM 时调用函数

Java mouseDown 事件对象

javascript - 如何知道在哪里定义了javascript方法以及使用firebug调用了哪个方法