# jQuery UI API - 按鈕部件(Button Widget)
## 所屬類別
[小部件(Widgets)](ref-widgets.html)
## 用法
**描述:**可主題化的按鈕和按鈕集合。
**版本新增:**1.8
按鈕部件(Button Widget)加強了標準表單元素的功能,比如按鈕(button)、輸入(input)、錨(anchor),用適當的懸停(hover)和激活(active)樣式來主題化按鈕。
除了基本的按鈕,單選按鈕和復選框(input 類型為 radio 和 checkbox)也可以轉換為按鈕。相關的標簽(label)設計成按鈕的樣式,點擊時更新底層的輸入。為了能正常工作,需要給 input 一個 `id` 屬性,并指向標簽(label)的 `for` 屬性。不要把 input 放在標簽(label)內,否則會[引起可訪問性問題](//www.paciellogroup.com/blog/2011/07/html5-accessibility-chops-form-control-labeling/)。
為了分組單選按鈕,Button 也提供了一個額外的小部件,名為 Buttonset。Buttonset 通過選擇一個容器元素(包含單選按鈕)并調用 `.buttonset()` 來使用。Buttonset 也提供了可視化分組,因此當有一組按鈕時都可考慮使用它。它會選擇所有的后代,并對它們應用 `.button()`。您可以啟用和禁用一個按鈕集,這將會啟用和禁用所有包含的按鈕。銷毀按鈕集會調用每個按鈕的 `destroy` 方法。對于分組的單選按鈕和復選框按鈕,推薦使用帶有 `legend` 的 `fieldset` 來提供一個可訪問的分組標簽。
當使用一個類型為 button、submit 或 reset 的 input 時,僅限于支持純文本無圖標標簽。
### 主題化
按鈕部件(Button Widget)使用 [jQuery UI CSS 框架](api-css-framework.html) 來定義它的外觀和感觀的樣式。如果需要使用按鈕指定的樣式,則可以使用下面的 CSS class 名稱:
* `ui-button`:表示按鈕的 DOM 元素。該元素會根據 [text](#option-text) 和 [icons](#option-icons) 選項添加下列 class 之一:`ui-button-text-only`、`ui-button-icon-only`、`ui-button-icons-only`、`ui-button-text-icons`。
* `ui-button-icon-primary`:用于顯示按鈕主要圖標的元素。只有當主要圖標在 [icons](#option-icons) 選項中提供時才呈現。
* `ui-button-text`:在按鈕的文本內容周圍的容器。
* `ui-button-icon-secondary`:用于顯示按鈕的次要圖標。只有當次要圖標在 [icons](#option-icons) 選項中提供時才呈現。
* `ui-buttonset`:Buttonset 的外層容器。
### 依賴
* [UI 核心(UI Core)](ref-ui-core.html)
* [部件庫(Widget Factory)](api-jQuery-widget.html)
### 附加說明
* 該部件要求一些功能性的 CSS,否則將無法工作。如果您創建了一個自定義的主題,請使用小部件指定的 CSS 文件作為起點。
### 快速導航
| 選項 | 方法 | 事件 |
| --- | --- | --- |
| [disabled](#option-disabled)[icons](#option-icons)[label](#option-label)[text](#option-text) | [destroy](#method-destroy)[disable](#method-disable)[enable](#method-enable)[option](#method-option)[refresh](#method-refresh)[widget](#method-widget) | [create](#event-create) |
#### disabled
**類型**:Boolean
**描述**:如果設置為 `true`,則禁用該 button。
**代碼實例:**
初始化帶有指定 `disabled` 選項的 button:
```
$( ".selector" ).button({ disabled: true });
```
在初始化后,獲取或設置 `disabled` 選項:
```
// getter
var disabled = $( ".selector" ).button( "option", "disabled" );
// setter
$( ".selector" ).button( "option", "disabled", true );
```
**默認值**:false
#### icons
**類型**:Object
**描述**:要顯示的圖標,包括帶有文本的圖標和不帶有文本的圖標(查看 [`text`](#option-text) 選項)。默認情況下 ,主圖標顯示在標簽文本的左邊,副圖標顯示在右邊。顯示位置可通過 CSS 進行控制。
`primary` 和 `secondary` 屬性值必須是 [圖標 class 名稱](api-icons.html),例如,`"ui-icon-gear"`。如果只使用一個圖標,則 `icons: { primary: "ui-icon-locked" }`。如果使用兩個圖標,則 `icons: { primary: "ui-icon-gear", secondary: "ui-icon-triangle-1-s" }`。
**代碼實例:**
初始化帶有指定 `icons` 選項的 button:
```
$( ".selector" ).button({ icons: { primary: "ui-icon-gear", secondary: "ui-icon-triangle-1-s" } });
```
在初始化后,獲取或設置 `disabled` 選項:
```
// getter
var icons = $( ".selector" ).button( "option", "icons" );
// setter
$( ".selector" ).button( "option", "icons", { primary: "ui-icon-gear", secondary: "ui-icon-triangle-1-s" } );
```
**默認值**:{ primary: null, secondary: null }
#### label
**類型**:String
**描述**:要顯示在按鈕中的文本。當未指定時(`null`),則使用元素的 HTML 內容,或者如果元素是一個 submit 或 reset 類型的 input 元素,則使用它的 `value` 屬性,或者如果元素是一個 radio 或 checkbox 類型的 input 元素,則使用相關的 label 元素的 HTML 內容。
**代碼實例:**
初始化帶有指定 `label` 選項的 button:
```
$( ".selector" ).button({ label: "custom label" });
```
在初始化后,獲取或設置 `label` 選項:
```
// getter
var label = $( ".selector" ).button( "option", "label" );
// setter
$( ".selector" ).button( "option", "label", "custom label" );
```
**默認值**:null
#### text
**類型**:Boolean
**描述**:是否顯示標簽。當設置為 `false` 時,不顯示文本,但是此時必須啟用 [`icons`](#options-icons) 選項,否則 `text` 選項將被忽略。
**代碼實例:**
初始化帶有指定 `text` 選項的 button:
```
$( ".selector" ).button({ text: false });
```
在初始化后,獲取或設置 `text` 選項:
```
// getter
var text = $( ".selector" ).button( "option", "text" );
// setter
$( ".selector" ).button( "option", "text", false );
```
**默認值**:true
#### 方法
#### destroy()
**類型**:jQuery (plugin only)
**描述**:完全移除 button 功能。這會把元素返回到它的預初始化狀態。
* 該方法不接受任何參數。
**代碼實例:**
調用 destroy 方法:
```
$( ".selector" ).button( "destroy" );
```
#### disable()
**類型**:jQuery (plugin only)
**描述**:禁用 button。
* 該方法不接受任何參數。
**代碼實例:**
調用 disable 方法:
```
$( ".selector" ).button( "disable" );
```
#### enable()
**類型**:jQuery (plugin only)
**描述**:啟用 button。
* 該方法不接受任何參數。
**代碼實例:**
調用 enable 方法:
```
$( ".selector" ).button( "enable" );
```
#### option( optionName )
**類型**:Object
**描述**:獲取當前與指定的 `optionName` 關聯的值。
* **optionName**
類型:String
描述:要獲取的選項的名稱。
**代碼實例:**
調用該方法:
```
var isDisabled = $( ".selector" ).button( "option", "disabled" );
```
#### option()
**類型**:PlainObject
**描述**:獲取一個包含鍵/值對的對象,鍵/值對表示當前 button 選項哈希。
* 該方法不接受任何參數。
**代碼實例:**
調用該方法:
```
var options = $( ".selector" ).button( "option" );
```
#### option( optionName, value )
**類型**:jQuery (plugin only)
**描述**:設置與指定的 `optionName` 關聯的 button 選項的值。
* **optionName**
類型:String
描述:要設置的選項的名稱。
* **value**
類型:Object
描述:要為選項設置的值。
**代碼實例:**
調用該方法:
```
$( ".selector" ).button( "option", "disabled", true );
```
#### option( options )
**類型**:jQuery (plugin only)
**描述**:為 button 設置一個或多個選項。
* **options**
類型:Object
描述:要設置的 option-value 對。
**代碼實例:**
調用該方法:
```
$( ".selector" ).button( "option", { disabled: true } );
```
#### refresh()
**類型**:jQuery (plugin only)
**描述**:刷新按鈕的視覺狀態。用于在以編程方式改變原生元素的選中狀態或禁用狀態后更新按鈕狀態。
* 該方法不接受任何參數。
**代碼實例:**
調用 refresh 方法:
```
$( ".selector" ).button( "refresh" );
```
#### widget()
**類型**:jQuery
**描述**:返回一個包含 button 的 `jQuery` 對象。
* 該方法不接受任何參數。
**代碼實例:**
調用 widget 方法:
```
var widget = $( ".selector" ).button( "widget" );
```
#### 事件
#### create( event, ui )
**類型**:buttoncreate
**描述**:當創建按鈕 button 時觸發。
* **event**
類型:Event
* **ui**
類型:Object
注意:`ui` 對象是空的,這里包含它是為了與其他事件保持一致性。
**代碼實例:**
初始化帶有指定 create 回調的 button:
```
$( ".selector" ).button({
create: function( event, ui ) {}
});
```
綁定一個事件監聽器到 buttoncreate 事件:
```
$( ".selector" ).on( "buttoncreate", function( event, ui ) {} );
```
## 實例
**實例 1:**
一個簡單的 jQuery UI 按鈕(Button)。
```
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>按鈕部件(Button Widget)演示</title>
<link rel="stylesheet" href="//code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css">
<script src="//code.jquery.com/jquery-1.10.2.js"></script>
<script src="//code.jquery.com/ui/1.10.4/jquery-ui.js"></script>
</head>
<body>
<button>按鈕標簽</button>
<script>
$( "button" ).button();
</script>
</body>
</html>
```
**實例 2:**
一個簡單的 jQuery UI 按鈕集(Buttonset)。
```
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>按鈕部件(Button Widget)演示</title>
<link rel="stylesheet" href="//code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css">
<script src="//code.jquery.com/jquery-1.10.2.js"></script>
<script src="//code.jquery.com/ui/1.10.4/jquery-ui.js"></script>
</head>
<body>
<form>
<fieldset>
<legend>最喜歡的 jQuery 項目</legend>
<div id="radio">
<input type="radio" id="sizzle" name="project">
<label for="sizzle">Sizzle</label>
<input type="radio" id="qunit" name="project" checked="checked">
<label for="qunit">QUnit</label>
<input type="radio" id="color" name="project">
<label for="color">Color</label>
</div>
</fieldset>
</form>
<script>
$( "#radio" ).buttonset();
</script>
</body>
</html>
```
- jQuery UI 基礎
- jQuery UI 簡介
- jQuery UI 下載
- jQuery UI 使用
- jQuery UI 定制
- jQuery UI 工作原理
- jQuery UI 主題
- jQuery UI 主題
- jQuery UI ThemeRoller
- jQuery UI CSS 框架 API
- jQuery UI 設計主題
- jQuery UI 部件庫
- jQuery UI 部件庫(Widget Factory)
- jQuery UI 通過部件庫(Widget Factory)擴展小部件
- jQuery UI 小部件(Widget)方法調用
- jQuery UI 為什么使用部件庫(Widget Factory)
- jQuery UI 如何使用部件庫(Widget Factory)
- jQuery UI 實例
- jQuery UI 實例
- jQuery UI 實例 - 拖動(Draggable)
- jQuery UI 實例 - 放置(Droppable)
- jQuery UI 實例 - 縮放(Resizable)
- jQuery UI 實例 - 選擇(Selectable)
- jQuery UI 實例 - 排序(Sortable)
- jQuery UI 實例 - 折疊面板(Accordion)
- jQuery UI 實例 - 自動完成(Autocomplete)
- jQuery UI 實例 - 按鈕(Button)
- jQuery UI 實例 - 日期選擇器(Datepicker)
- jQuery UI 實例 - 對話框(Dialog)
- jQuery UI 實例 - 菜單(Menu)
- jQuery UI 實例 - 進度條(Progressbar)
- jQuery UI 實例 - 滑塊(Slider)
- jQuery UI 實例 - 旋轉器(Spinner)
- jQuery UI 實例 - 標簽頁(Tabs)
- jQuery UI 實例 - 工具提示框(Tooltip)
- jQuery UI 實例 - 特效(Effect)
- jQuery UI 實例 - 顯示(Show)
- jQuery UI 實例 - 隱藏(Hide)
- jQuery UI 實例 - 切換(Toggle)
- jQuery UI 實例 - 添加 Class(Add Class)
- jQuery UI 實例 - 移除 Class(Remove Class)
- jQuery UI 實例 - 切換 Class(Toggle Class)
- jQuery UI 實例 - 轉換 Class(Switch Class)
- jQuery UI 實例 - 顏色動畫(Color Animation)
- jQuery UI 實例 - 定位(Position)
- jQuery UI 實例 - 部件庫(Widget Factory)
- jQuery UI API 參考
- jQuery UI API 類別 - 特效(Effects)
- jQuery UI API - .addClass()
- jQuery UI API - 百葉窗特效(Blind Effect)
- jQuery UI API - 反彈特效(Bounce Effect)
- jQuery UI API - 剪輯特效(Clip Effect)
- jQuery UI API - 顏色動畫(Color Animation)
- jQuery UI API - 降落特效(Drop Effect)
- jQuery UI API - Easings
- jQuery UI API - .effect()
- jQuery UI API - 爆炸特效(Explode Effect)
- jQuery UI API - 淡入淡出特效(Fade Effect)
- jQuery UI API - 折疊特效(Fold Effect)
- jQuery UI API - .hide()
- jQuery UI API - 突出特效(Highlight Effect)
- jQuery UI API - 膨脹特效(Puff Effect)
- jQuery UI API - 跳動特效(Pulsate Effect)
- jQuery UI API - .removeClass()
- jQuery UI API - 縮放特效(Scale Effect)
- jQuery UI API - 震動特效(Shake Effect)
- jQuery UI API - .show()
- jQuery UI API - 尺寸特效(Size Effect)
- jQuery UI API - 滑動特效(Slide Effect)
- jQuery UI API - .switchClass()
- jQuery UI API - .toggle()
- jQuery UI API - .toggleClass()
- jQuery UI API - 轉移特效(Transfer Effect)
- jQuery UI API 類別 - 特效核心(Effects Core)
- jQuery UI API - 顏色動畫(Color Animation)
- jQuery UI API 類別 - 交互(Interactions)
- jQuery UI API - 可拖拽小部件(Draggable Widget)
- jQuery UI API - 可放置小部件(Droppable Widget)
- jQuery UI API - 鼠標交互(Mouse Interaction)
- jQuery UI API - 可調整尺寸小部件(Resizable Widget)
- jQuery UI API - 可選擇小部件(Selectable Widget)
- jQuery UI API - 可排序小部件(Sortable Widget)
- jQuery UI API 類別 - 方法重載(Method Overrides)
- jQuery UI API - .focus()
- jQuery UI API - .position()
- jQuery UI API 類別 - 方法(Methods)
- jQuery UI API - .disableSelection()
- jQuery UI API - .enableSelection()
- jQuery UI API - .removeUniqueId()
- jQuery UI API - .scrollParent()
- jQuery UI API - .uniqueId()
- jQuery UI API - .zIndex()
- jQuery UI API 類別 - 選擇器(Selectors)
- jQuery UI API - :data() Selector
- jQuery UI API - :focusable Selector
- jQuery UI API - :tabbable Selector
- jQuery UI API 類別 - 主題(Theming)
- jQuery UI API - CSS 框架(CSS Framework)
- jQuery UI API - 圖標(Icons)
- jQuery UI API - 堆疊元素(Stacking Elements)
- jQuery UI API 類別 - UI 核心(UI Core)
- jQuery UI API 類別 - 實用工具(Utilities)
- jQuery UI API - 部件庫(Widget Factory)
- jQuery UI API - 插件橋(Widget Plugin Bridge)
- jQuery UI API 類別 - 小部件(Widgets)
- jQuery UI API - 折疊面板部件(Accordion Widget)
- jQuery UI API - 自動完成部件(Autocomplete Widget)
- jQuery UI API - 按鈕部件(Button Widget)
- jQuery UI API - 日期選擇器部件(Datepicker Widget)
- jQuery UI API - 對話框部件(Dialog Widget)
- jQuery UI API - 菜單部件(Menu Widget)
- jQuery UI API - 進度條部件(Progressbar Widget)
- jQuery UI API - 滑塊部件(Slider Widget)
- jQuery UI API - 旋轉器部件(Spinner Widget)
- jQuery UI API - 標簽頁部件(Tabs Widget)
- jQuery UI API - 工具提示框部件(Tooltip Widget)
- jQuery EasyUI 簡介
- jQuery EasyUI 應用
- jQuery EasyUI 應用 - 創建 CRUD 應用
- jQuery EasyUI 應用 - 創建 CRUD 數據網格(DataGrid)
- jQuery EasyUI 應用 - 創建展開行明細編輯表單的 CRUD 應用
- jQuery EasyUI 應用 - 創建 RSS Feed 閱讀器
- jQuery EasyUI 拖放
- jQuery EasyUI 拖放 - 基本的拖動和放置
- jQuery EasyUI 拖放 - 創建拖放的購物車
- jQuery EasyUI 拖放 - 創建學校課程表
- jQuery EasyUI 菜單與按鈕
- jQuery EasyUI 菜單與按鈕 - 創建簡單的菜單
- jQuery EasyUI 菜單與按鈕 - 創建鏈接按鈕(Link Button)
- jQuery EasyUI 菜單與按鈕 - 創建菜單按鈕(Menu Button)
- jQuery EasyUI 菜單與按鈕 - 創建分割按鈕(Split Button)
- jQuery EasyUI 布局
- jQuery EasyUI 布局 - 為網頁創建邊框布局
- jQuery EasyUI 布局 - 在面板中創建復雜布局
- jQuery EasyUI 布局 - 創建折疊面板
- jQuery EasyUI 布局 - 創建標簽頁(Tabs)
- jQuery EasyUI 布局 - 動態添加標簽頁(Tabs)
- jQuery EasyUI 布局 - 添加自動播放標簽頁(Tabs)
- jQuery EasyUI 布局 - 創建 XP 風格左側面板
- jQuery EasyUI 數據網格
- jQuery EasyUI 數據網格 - 轉換 HTML 表格為數據網格
- jQuery EasyUI 數據網格 - 取得選中行數據
- jQuery EasyUI 數據網格 - 添加查詢功能
- jQuery EasyUI 數據網格 - 添加工具欄
- jQuery EasyUI 數據網格 - 創建復雜工具欄
- jQuery EasyUI 數據網格 - 設置凍結列
- jQuery EasyUI 數據網格 - 動態改變列
- jQuery EasyUI 數據網格 - 格式化列
- jQuery EasyUI 數據網格 - 設置排序
- jQuery EasyUI 數據網格 - 自定義排序
- jQuery EasyUI 數據網格 - 創建列組合
- jQuery EasyUI 數據網格 - 添加復選框
- jQuery EasyUI 數據網格 - 自定義分頁
- jQuery EasyUI 數據網格 - 啟用行內編輯
- jQuery EasyUI 數據網格 - 擴展編輯器
- jQuery EasyUI 數據網格 - 列運算
- jQuery EasyUI 數據網格 - 合并單元格
- jQuery EasyUI 數據網格 - 創建自定義視圖
- jQuery EasyUI 數據網格 - 創建頁腳摘要
- jQuery EasyUI 數據網格 - 條件設置行背景顏色
- jQuery EasyUI 數據網格 - 創建屬性網格
- jQuery EasyUI 數據網格 - 擴展行顯示細節
- jQuery EasyUI 數據網格 - 創建子網格
- jQuery EasyUI 數據網格 - 使用虛擬滾動視圖顯示海量數據
- jQuery EasyUI 數據網格 - 添加分頁組件
- jQuery EasyUI 窗口
- jQuery EasyUI 窗口 - 創建簡單窗口
- jQuery EasyUI 窗口 - 自定義窗口工具欄
- jQuery EasyUI 窗口 - 窗口與布局
- jQuery EasyUI 窗口 - 創建對話框
- jQuery EasyUI 窗口 - 自定義帶有工具條和按鈕的對話框
- jQuery EasyUI 樹形菜單
- jQuery EasyUI 樹形菜單 - 使用標記創建樹形菜單
- jQuery EasyUI 樹形菜單 - 創建異步樹形菜單
- jQuery EasyUI 樹形菜單 - 樹形菜單添加節點
- jQuery EasyUI 樹形菜單 - 創建帶復選框的樹形菜單
- jQuery EasyUI 樹形菜單 - 樹形菜單拖放控制
- jQuery EasyUI 樹形菜單 - 樹形菜單加載父/子節點
- jQuery EasyUI 樹形菜單 - 創建基礎樹形網格
- jQuery EasyUI 樹形菜單 - 創建復雜樹形網格
- jQuery EasyUI 樹形菜單 - 樹形網格動態加載
- jQuery EasyUI 樹形菜單 - 樹形網格添加分頁
- jQuery EasyUI 樹形菜單 - 樹形網格惰性加載節點
- jQuery EasyUI 表單
- jQuery EasyUI 表單 - 創建異步提交表單
- jQuery EasyUI 表單 - 表單驗證
- jQuery EasyUI 表單 - 創建樹形下拉框
- jQuery EasyUI 表單 - 格式化下拉框
- jQuery EasyUI 表單 - 過濾下拉數據網格
- jQuery EasyUI 插件
- jQuery EasyUI 擴展
- 免責聲明