{hero}

按钮组选择器

按钮组选择器(多个按钮实例)。
请注意 - 该属性需要 DataTables 的按钮扩展。

描述

DataTables 的按钮扩展可以在单个 DataTable 上创建和附加多个 DataTable.Buttons 对象的实例,从而能够向最终用户显示不同的按钮集。例如,您可以在表格上方和下方显示相同的按钮,或者根据设计要求在表格周围的不同位置显示完全不同的按钮集。

由于这种多实例行为,buttons()button() 方法提供从附加到 DataTable 的一个或多个按钮实例中选择按钮的选项。

选项

按钮组选择器可以以多种不同的形式给出,以确保 API 针对您的用例灵活

  • 没有选择器 - 选择所有按钮实例
  • integer - 实例索引选择器
  • string - 实例名称选择器(由 buttons.name 设置)
  • node - 按钮组的 div 元素(自 3.0.2 起)。
  • array - 包含上述任何选项组合的数组

无选择器

如果未给出按钮组选择器(即 undefined),则将选择 DataTables API 上下文中表可用的所有按钮实例(即包含对多个表引用的 API 实例得到完全支持)。

禁用页面上的所有按钮
var allTables = DataTable.tables({api: true});
allTables.buttons().disable();
使用现有 DataTables 实例启用所有按钮
table.buttons().enable();

整数

按钮实例存储在附加到每个 DataTable 的数组中。因此,可以通过索引访问它们。

请注意,如果使用 buttons().destroy() 方法删除 Buttons 实例,则可以更改每个实例的索引 - 因此,通常更喜欢对实例名称使用字符串选择器。随着新的 Buttons 实例的创建,它们总会被推送到数组的末尾。

选择第一个按钮实例并禁用第二个按钮
var table = new DataTable('#myTable');

table.buttons(0, 1).disable();

字符串

每个按钮实例可以使用选项 buttons.name 进行命名,这允许单独选择它,而无需像使用整数选择器一样追踪实例索引。此外,实例名称不必唯一,因此单个名称可以指多个按钮实例。

除了能够使用字符串选择单个实例之外,还可以使用逗号分隔符选择多个实例(与在 CSS 或 jQuery 选择器中使用逗号选择多个元素的方式非常相似)。

带有两组按钮的表格;为主实例启用按钮索引 0
var table = new DataTable('#myTable', {
    layout: {
        topStart: {
            buttons: {
                name: 'main',
                buttons: [
                    // ...
                ]
            }
        },
        bottomStart: {
            buttons: {
                name: 'commands',
                buttons: [
                    // ...
                ]
            }
        }
    }
});

table.buttons('main', 0).enable();
使用逗号选择两个按钮实例
var table = new DataTable('#myTable', {
    layout: {
        topStart: {
            buttons: {
                name: 'main',
                buttons: [
                    // ...
                ]
            }
        },
        bottomStart: {
            buttons: {
                name: 'commands',
                buttons: [
                    // ...
                ]
            }
        }
    }
});

// Note the use of `null` in the second parameter to act as the button selector
// since `buttons()` with a single parameter will treat the first parameter as
// a button selector. See the `buttons()` documentation for full details.
table.buttons('export, commands', null).containers().appendTo('#panel');

节点

可以使用 div 元素,使用容器元素选择按钮实例组。如果你使用多个按钮集,并且需要基于其中包含的按钮的交互选择特定组,这将非常有用。

请注意,这必须是一个普通的 div,而不是内部带有 div 的 jQuery 对象。如果你使用 jQuery 选择容器,请使用 $().get()

div 中选择按钮组
// Note `this` might be a button element itself
let groupEl = this.closest('div.dt-buttons');

table
    .buttons(groupEl, null)
    .containers()
    .appendTo('#panel');

数组

作为数组,按钮组选择器可以选择一个或多个按钮实例。这允许你使用单个 API 调用对多个选定实例进行操作。如果使用此方法选择了同一实例多次,它将自动减少为单个选择。

与上面逗号字符串选择器的示例相同,但使用字符串数组
table
    .buttons(['export', 'commands'], null)
    .containers()
    .appendTo('#panel');