3

我有一个使用 Jquery 和数据表插件从后端返回的数据表。我需要在数据表中选择订单号并提醒它。警报和控制台在数据表的第一页中运行良好,但不再从第二页触发。我用谷歌搜索但.live()已弃用,建议的答案.on()似乎不起作用。

查询:

$(document).ready(function () {
$.ajax({
    type: "POST",
    //url: "OrderDetail.asmx/HelloWorld",
    url: "Order.aspx/GetOrder",
    data: "{'id':'273440'}",
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function (msg) {
        $('#order').append(msg.d);
        //alert(msg.d);
        console.log(msg);
        $('#orderTable').dataTable({
            // "sScrollY": "100px",

            "bAutoWidth": false,
            "bDeferRender": true
            //"bPaginate": false

        });
        // Click order number to get the details
        // Problem is here 
        $('.orderNumber').on('click', function () {
            var orderNum = $(this).text();
            console.log(orderNum);
        });

    },
    error: function (xhr, status, error) {
        // Display a generic error for now.
        alert("Ajax Error!");
    }
});

});

4

1 回答 1

5

您设置的 onclick 事件仅适用于页面上的元素。这就是为什么它只适用于第一页。每当数据表显示新结果时,您都应该设置 onclick 事件。这可以通过将 onclick 侦听器移动到数据表的 fnDrawCallback 函数来完成。

$('#orderTable').dataTable({
    // "sScrollY": "100px",

    "autoWidth": false,
    "deferRender": true,
    //"bPaginate": false,

    "drawCallback": function() {
        $('.orderNumber').on('click', function () {
            var orderNum = $(this).text();
            console.log(orderNum);
        });
    }
});

https://datatables.net/reference/option/drawCallback

于 2013-08-23T18:59:44.227 回答