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

Javascript 在datatables初始化方法中,访问数据属性的最干净方法是什么,javascript,jquery,datatables,jquery-datatables,Javascript,Jquery,Datatables,Jquery Datatables,有人知道为什么这两个初始化摘录都不起作用吗?虽然表具有数据HTML属性,但javascript仍然无法提取该值 $('.datatable').dataTable({ ajax: $(this).data("ajaxurl"), columns: [ { data: "id" }, { data: "ip_address" }, { data: "rea

有人知道为什么这两个初始化摘录都不起作用吗?虽然表具有数据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函数的作用域与我预期的不同,因此它不包含对DOM元素的引用

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

var oTable = $('.datatable');
oTable.dataTable({
            ajax: oTable.data("ajaxurl"),
            columns: [
                { data: "id" },
                { data: "ip_address" },
                { data: "reason" }
            ]
        });
但是我希望初始化代码是自包含的。

这是一个表DOM元素

例如:

<table class="datatable" data-ajaxurl="/post/ajax.php">
</table>
您在上下文之外使用这个变量,这就是为什么它不是DataTables对象的实例,并且两个示例都不起作用

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

但是,DataTables已经支持初始化的数据属性,请参阅。例如,可以使用数据ajax定义ajax属性值:

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

谢谢你的回复。但似乎不是这样,因为我无法使用this.dataset.ajaxurlvar obj=document.getElementsByClassNamedatatable[0]访问元素数据;console.logobj.dataset.ajaxurl;不过还是管用的。这个问题中的代码不应该与我用原生JS检索的obj相同吗?this-ref,$this-objGreat,datatables似乎从很久以前我最后一次使用它以来就已经进化了。这是一个非常方便的功能
$('.datatable').dataTable({
    columns: [
        { data: "id" },
        { data: "ip_address" },
        { data: "reason" }
    ]
});