jquery 无法重新初始化DataTable为表ID和不存在的类初始化了两次

zwghvu4y  于 2023-08-04  发布在  jQuery
关注(0)|答案(1)|浏览(131)

我遇到了一个关于DataTables的奇怪问题。不知道这是怎么回事。
我在页脚JavaScript代码这是全球范围内可用于整个网站的一般代码。

$('.datatable').dataTable({
    "autoWidth": false,
    "processing": true,
    "serverSide": false,
    "iDisplayLength": 25
    ... other codes here
});

字符串
在另一个页面中,我有下面的代码。(我想为这个页面初始化一个新的DataTable,因为它需要一些不同的设置)
HTML Code:-

<table id="product-catalog-datatable"
       class="table table-hover table-responsive">


JS代码(特定于此页只):-

$('#product-catalog-datatable').DataTable({
  ....other codes here


问题是,即使我的产品索引页表没有类datatable,全局DataTable函数也会初始化为我的product-catalog-datatable表以及特定于页的DataTable()函数。
我得到这个错误:
DataTables警告:table id=product-catalog-datatable -无法重新初始化DataTable。有关此错误的详细信息,请参阅http://datatables.net/tn/3
不知道这是怎么回事。有人有主意吗?

ff29svar

ff29svar1#

您遇到的问题是由于同一个表元素上的DataTable初始化冲突造成的。当全局调用$('.datatable').dataTable({...})时,它将应用于所有具有类datatable的元素。但是,当您专门为#product-catalog-datatable表调用$('#product-catalog-datatable').DataTable({...})时,它会初始化同一表上的另一个DataTable。
你可以试试这个:
删除全局DataTable初始化,并仅将其应用于需要它的特定表。修改全局代码以排除#product-catalog-datatable表。JS代码(全局):

$('table.datatable:not(#product-catalog-datatable)').DataTable({
  "autoWidth": false,
  "processing": true,
  "serverSide": false,
  "iDisplayLength": 25
  // ...other codes here
});

字符串
JS代码(特定于#product-catalog-datatable页面):

$('#product-catalog-datatable').DataTable({
  // ...other codes here
});

相关问题