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

时间:2016-10-31 09:53:49

标签: javascript jquery datatables

我想为表格的第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)

我做错了什么,是否有更好的方法使用数据表向单元格添加监听器?

2 个答案:

答案 0 :(得分:2)

问题是由于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);
})

答案 1 :(得分:1)

您在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>