如何动态启用/禁用响应式扩展

Rya*_*anf 5 html javascript jquery json datatables

我有一个项目,用户需要能够选择随附的脚本是否激活 jQuery DataTables 的响应式扩展。

我想在 HTML 中添加一个下拉菜单,让用户选择是否将选项responsive设置为初始化选项truefalsedataTable()初始化选项中。

我尝试添加一个单独的函数来选择值,并使用全局变量将其传递给函数dataTable(),但无法使其工作。

JavaScript:

$(document).ready(function(){
 $("#example").dataTable({

    "responsive": false,
    "processing": false,
    "serverSide": true,
    "ajax": "scripts/university.php",
    "columns": [
       // ID
       null, ........
Run Code Online (Sandbox Code Playgroud)

*HTML**

  <select id="selected2" onchange="myFunction()">
  <option value="true">true</option>
  <option value="false">false</option>
  </select>
Run Code Online (Sandbox Code Playgroud)

我尝试添加一个document.getElementById子句作为 dataTable 函数的第一行,但无法使其工作。

我可以向现有功能添加什么以使responsive选项用户可以从 HTML 页面上的列表中进行选择?

Gyr*_*com 3

解决方案

您需要销毁表才能重新初始化它并启用/禁用响应式扩展。

var dtOptions = {
    responsive: true           
};

var table = $('#example').DataTable(dtOptions);

$('#ctrl-select').on('change', function(){
    dtOptions.responsive = ($(this).val() === "1") ? true : false;

    $('#example').DataTable().destroy();
    $('#example').removeClass('dtr-inline collapsed');

    table = $('#example').DataTable(dtOptions);
});
Run Code Online (Sandbox Code Playgroud)

笔记

当表被销毁时,响应式扩展会留下一些类(dtr-inlinecollapsed),因此我在再次初始化表之前手动删除它们。

另外,我建议将所有选项放在一个单独的对象中dtOptions,以便重新初始化更容易,这样您只需要切换一个选项即可responsive

演示版

有关代码和演示,请参阅此 jsFiddle 。