在数据表初始化方法中访问数据属性的最干净的方法是什么

What would we the cleanest way to access data attribute INSIDE the datatables initialisation method

有谁知道为什么这两个初始化摘录都不起作用?尽管 table 具有 data HTML 属性 javascript 仍然无法提取该值

$('.datatable').dataTable({
            ajax: $(this).data("ajaxurl"),
            columns: [
                { data: "id" },
                { data: "ip_address" },
                { data: "reason" }
            ]
        });


$('.datatable').dataTable({
            ajax: this.dataset.ajaxurl,
            columns: [
                { data: "id" },
                { data: "ip_address" },
                { data: "reason" }
            ]
        });

似乎 dataTable() 函数的范围与我预期的不同,因此 this 不包含对 DOM 元素的引用。

在初始化方法中访问数据属性的最简洁方法是什么?我能够做到这一点

var oTable = $('.datatable');
oTable.dataTable({
            ajax: oTable.data("ajaxurl"),
            columns: [
                { data: "id" },
                { data: "ip_address" },
                { data: "reason" }
            ]
        });

但我希望初始化代码是独立的。

这是一个 table DOM 元素。

例如:

<table class="datatable" data-ajaxurl="/post/ajax.php">
</table>

您正在脱离上下文使用 this 变量,这就是为什么它不是 DataTables 对象的实例并且您的两个示例都不起作用的原因。

您的最后一个示例是在初始化期间访问 jQuery 对象的正确方法。

但是 DataTables 已经支持 data- 属性进行初始化,请参阅 this demo。例如,您可以使用 data-ajax 来定义 ajax 属性 值:

<table class="datatable display" data-ajax="/post/ajax.php">
</table>

您的代码可以简化为:

$('.datatable').dataTable({
    columns: [
        { data: "id" },
        { data: "ip_address" },
        { data: "reason" }
    ]
});