向数据表单元格添加侦听器

Add a listener to datatables cell

本文关键字:侦听器 添加 单元格 数据表      更新时间:2023-09-26

我想为表(我使用数据表)的第7列的每个单元格添加一个复选框和一个侦听器:

<script>
$(document).ready(function() {
    // add checkbox to scheduled
    $("#pm_table td:nth-child(7)").each(function() {
        var site_id =2;
        // $(this).closest("tr");
        // add checkbox
        $(this).prepend('<input type="checkbox" '+(($(this).text())!='0'?'checked':' ')
        +
        // add listener
        ' onchange = alert("site_id:" ' + site_id + '") '
        +
        '/>');
    });
});
</script>

问题是当我尝试选中/取消选中复选框时,我遇到这个错误:

(index):1 Uncaught SyntaxError: missing) after argument list

我做错了什么,也有一个更好的方法来添加一个监听器到使用数据表的单元格?

问题是由于onchange事件属性周围缺少引号,但是您应该完全避免使用它们并使用委托事件处理程序。试试这个:

$("#pm_table td:nth-child(7)").each(function() {
    var $checkbox = $('<input type="checkbox" class="foo" />').appendTo(this);
    $checkbox.prop('checked', parseInt($(this).text(), 10) != 0);
});
$('#pm_table').on('change', '.foo', function() {
    var site_id = 2;
    alert(site_id);
})

您在onchange事件中添加额外的+,"

$(document).ready(function() {
        // add checkbox to scheduled
        $("#three").each(function() {
            var site_id =2// $(this).closest("tr");
            // add checkbox
            $(this).prepend('<input type="checkbox" '+(($(this).text())!='0'?'checked':' ')
                +
                // add listener
                ' onchange = alert("site_id:'+site_id+'") />');
        });
    } );
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<div id="three">1212</div>