{hero}

按鈕選擇器

按鈕選擇器。
請注意 - 這個屬性需要 DataTables 的 Buttons 擴充功能。

描述

DataTables 的 Buttons 擴充功能提供了一個彈性的 API,它使用 buttons()button() 方法作為其基本存取點。使用這兩個方法,您可以從一個或多個按鈕群組(實例)中選擇一個或多個按鈕,然後對這些選定的按鈕執行操作。這旨在匹配 核心 DataTables API 對於行、列和單元格選擇的行為,為所有 DataTables 互動提供一致的 API 介面。

選項

以下選項可以用作 buttons()button() 方法的按鈕選擇器

  • 無選擇器 - 選擇所有按鈕
  • null - 無選擇器 的別名
  • integer - 根據索引選擇按鈕
  • {\d}{\d}-{\d} - 按鈕索引選擇器,包含子按鈕 (例如 2-1)
  • {string}:name - 按鈕名稱選擇器
  • string - jQuery 選擇器(在按鈕節點上執行)
  • node - DOM 元素選擇器
  • jQuery - DOM 元素選擇器
  • array - 包含上述選項任意組合的陣列

無選擇器

無選擇器(即 undefinednull)將選擇集合中所有可用的按鈕,包括集合中的任何按鈕。這提供了同時在實例中的所有按鈕上執行操作的能力。

停用所有按鈕
var table = new DataTable('#myTable');

table.buttons().disable();

integer

整數選擇器將選擇頂層按鈕(即那些始終可見的按鈕 - 而不是集合中的按鈕)作為一個簡單的索引計數器。按鈕按索引添加和儲存,因此提供了這個簡單的選擇器選項,如果您不是動態添加和移除按鈕(如果您是,請考慮使用下面的按鈕名稱選擇器),這個選項非常有用。

僅停用第二個按鈕
var table = new DataTable('#myTable');

table.button(1).disable();

{\d} 或 {\d}-{\d}

如上所述,整數選擇器只能選擇頂層按鈕,但也可以使用索引選擇集合中的按鈕。在這種情況下,給定的選擇器是 {topIndex}-{collectionIndex},其中兩個索引都是從 0 開始的。

# 例如考慮按鈕結構
buttons: [
    'add',
    'edit',
    'remove',
    {
        text: 'Export',
        buttons: ['csv', 'pdf']
    }
]

頂層的 Export 按鈕可以使用 table.button( 3 ) 選擇,而 CSV 按鈕可以使用 table.button( '3-0' ) 選擇。

這裡值得注意的是,集合的深度沒有限制。如果存在類似 collection button > sub-collection > sub-sub-collection 的結構,那麼要選擇子子集合中的第一個按鈕,選擇器將採用 {\d}-{\d}-{\d} 的形式,或者使用真實數字,0-0-0

{string}:name

可以使用 buttons.buttons.name 選項為每個按鈕指定一個名稱,以便可以單獨選擇它,而無需像使用上面的索引選擇器選項那樣追蹤按鈕索引。此外,按鈕名稱不需要是唯一的,因此單個名稱可以引用多個按鈕。

除了能夠使用字串選擇單個按鈕之外,還可以使用逗號分隔符選擇多個按鈕(與在 CSS 或 jQuery 選擇器中使用逗號選擇多個元素的方式非常相似)。

使用名稱選擇器停用按鈕
var table = new DataTable('#myTable', {
    buttons: [{ extend: 'csv', name: 'csv' }]
});

table.buttons('csv:name').disable();

string

如果給定的字串作為選擇器,它將首先被檢查是否匹配上面的選擇器選項之一 - 特別是索引或名稱選擇器。如果不是,則將按鈕節點收集到 jQuery 實例中,並將給定的選擇器作為篩選器運行。這對於根據類別名稱進行選擇特別有用(可以使用 buttons.buttons.className 和其他常見 DOM 屬性進行設定)。

使用類別名稱選擇器停用按鈕
var table = new DataTable('#myTable', {
    buttons: [{ extend: 'csv', className: 'csv' }]
});

table.buttons('.csv').disable();

node

使用 DOM 元素選擇按鈕。如果您在按鈕中使用 DOM 事件,並且只有一個節點可以引用它,這會很有用。

在滑鼠進入時啟用按鈕
var table = new DataTable('#myTable');

$('#content').on('mouseenter', 'a.dt-button', function (e) {
    table.button(this).enable();
});

jQuery

與上面的 node 類型非常相似(因為 jQuery 物件是 DOM 節點的類似陣列列表),可以將 jQuery 實例作為按鈕選擇器給定。如果您已經選擇了要執行操作的節點,這會很有用。

停用類別名稱為 csv 的按鈕
var table = new DataTable('#myTable');

table.buttons($('a.dt-button.csv')).disable();

array

可以將上述選項的任意組合作為選擇器一起給定,從而提供一種選擇多個按鈕或混合選擇器類型的方法,只需在陣列中提供所需的選擇器選項即可。按鈕將自動移除任何重複項,以確保通過 API 請求的任何操作對於每個按鈕只發生一次。

停用索引 0 的按鈕和所有類別為 csv 的按鈕
var table = new DataTable('#myTable');

table.buttons([0, '.csv']).disable();