删除数据表行中的按钮在init和fnDrawCallback上未正确绑定

时间:2013-09-04 12:08:23

标签: jquery ajax datatables live

我的表格的每一行都有一个删除按钮,它使用AJAX来获取json数组并加载数据。 .on()单击事件位于页面页脚的fnDrawkCallback之外。我认为将它放入回调会解决这个问题,但事实并非如此。

每次表从第一个init加载到添加或删除行的任何重绘时,当我单击任何行中的删除按钮时,只删除顶部的第一行。为什么on click事件绑定到该行的删除按钮?

删除按钮具有.remImg类,该按钮从json数组加载到表中作为键值。

由于

  var oTable =  $('#sss').dataTable({
        "oLanguage": {
            "sEmptyTable": "No data"
        },
        "bProcessing": true,
        "bServerSide": true,
        //"aaData": testdata,
        "sAjaxSource": 'http://example.com/sss.php',
        "aoColumns": [
    { "mDataProp": "date" },
    { "mDataProp": "action_buttons","bSortable": false } 
    ],
    "fnDrawCallback": function( oSettings ) {

          $(document).on("click", ".remImage", function(e) {

        jQuery.ajax({
            type: 'post',
            url: 'http://example.com/sss.php',
            data: {
                action: 'delete_post',
                att_ID: jQuery('#att_remove').val(),
                _ajax_nonce: jQuery('#nonce').val(),
                post_type: 'sss'
            },
            success: function( html ) {
                alert( html );
                $('#sss').dataTable().fnReloadAjax();               
            }
        });
    return false;
    });
        }
});

1 个答案:

答案 0 :(得分:1)

att_ID: jQuery('#att_remove').val(),

这将仅定位页面上的第一个#att_remove值,因此无论您从何处触发事件,都只会删除您的第一行。

使用另一种方法来访问不依赖于id选择器的值,你应该得到你希望的结果。