# jQuery UI 工作原理
jQuery UI 包含了許多維持狀態的小部件(Widget),因此,它與典型的 jQuery 插件使用模式略有不同。其安裝方式與大部分 jQuery 插件的安裝方式類似,jQuery UI 的小部件是基于 [部件庫(Widget Factory)](jqueryui-widget-factory.html) 創建的,小部件庫提供了通用的 API。所以,只要您學會使用其中一個,您就知道如何使用其他的小部件(Widget)。本教程將通過 [進度條(progressbar)](example-progressbar.html) 小部件代碼實例介紹常見的功能。
## 安裝
為了跟蹤部件的狀態,我們首先介紹一下小部件的全生命周期。當小部件安裝時,生命周期開始。我們只需要在一個或多個元素上調用插件,即安裝了小部件。
```
$( "#elem" ).progressbar();
```
這將會初始化 jQuery 對象中的每個元素,在本例中,元素 id 為 "elem"。因為我們調用無參數的 `.progressbar()` 方法,小部件則會按照它的默認選項進行初始化。我們可以在安裝時傳遞一組選項,這樣既可重寫默認選項。
```
$( "#elem" ).progressbar({ value: 20 });
```
安裝時傳遞的選項數目多少可根據我們的需要而定。任何我們未傳遞的選項則都使用它們的默認值。
選項是小部件狀態的組成部分,所以我們也可以在安裝后再進行設置選項。我們將在后續的 `option` 方法中介紹這部分內容。
## 方法
既然小部件已經初始化,我們就可以查詢它的狀態,或者在小部件上執行動作。所有初始化后的動作都以方法調用的形式進行。為了在小部件上調用一個方法,我們可以向 jQuery 插件傳遞方法的名稱。例如,為了在進度條(progressbar)小部件上調用 `value` 方法,我們應該使用:
```
$( "#elem" ).progressbar( "value" );
```
如果方法接受參數,我們可以在方法名后傳遞參數。例如,為了傳遞參數 `40` 給 `value` 方法,我們可以使用:
```
$( "#elem" ).progressbar( "value", 40 );
```
就像 jQuery 中的其他方法一樣,大部分的小部件方法為鏈接返回 jQuery 對象。
```
$( "#elem" )
.progressbar( "value", 90 )
.addClass( "almost-done" );
```
### 公共的方法
每個小部件都有它自己的一套基于小部件所提供功能的方法。然而,有一些方法是所有小部件都共同具有的。
#### option
正如我們前面所提到的,我們可以在初始化之后通過 `option` 方法改變選項。例如,我們可以通過調用 `option` 方法改變 progressbar(進度條)的 value 為 30。
```
$( "#elem" ).progressbar( "option", "value", 30 );
```
請注意,這與之前我們調用 `value` 方法的實例有所不同。在本實例中,我們調用 `option` 方法,改變 value 選項為 30。
我們也可以為某個選項獲取當前的值。
```
$( "#elem" ).progressbar( "option", "value" );
```
另外,我們可以通過給 `option` 方法傳遞一個對象,一次更新多個選項。
```
$( "#elem" ).progressbar( "option", {
value: 100,
disabled: true
});
```
您也許注意到 `option` 方法有著與 jQuery 代碼中取值器和設置器相同的標志,就像 `.css()` 和 `.attr()`。唯一的不同就是您必須傳遞字符串 "option" 作為第一個參數。
#### disable
`disable` 方法禁用小部件。在進度條(progressbar)實例中,這會改變樣式讓進度條顯示為禁用狀態。
```
$( "#elem" ).progressbar( "disable" );
```
調用 `disable` 方法等同于設置 `disabled` 選項為 `true`。
#### enable
`enable` 方法是 `disable` 方法的對立面。
```
$( "#elem" ).progressbar( "enable" );
```
調用 `enable` 方法等同于設置 `disabled` 選項為 `false`。
#### destroy
如果您不再需要小部件,那么可以銷毀它,返回到最初的標記。這意味著小部件生命周期的終止。
```
$( "#elem" ).progressbar( "destroy" );
```
一旦您銷毀了一個小部件,您就不能在該部件上調用任何方法,除非您再次初始化這個小部件。如果您要移除元素,可以直接通過 `.remove()`,也可以通過 `.html()` 或 `.empty()` 修改祖先,小部件會自動銷毀。
#### widget
一些小部件生成包裝器元素,或與原始元素斷開連接的元素。在下面的實例中,`widget` 將返回生成的元素。在進度條(progressbar)實例中,沒有生成的包裝器,`widget` 方法返回原始的元素。
```
$( "#elem" ).progressbar( "widget" );
```
## 事件
所有的小部件都有跟他們各種行為相關的事件,用于在狀態改變時通知您。對于大多數的小部件,當事件被觸發時,名稱以小部件名稱為前綴。例如,我們可以綁定進度條()的 change 事件,一旦值發生變化時就觸發。
```
$( "#elem" ).bind( "progressbarchange", function() {
alert( "The value has changed!" );
});
```
每個事件都有一個相對應的回調,作為選項進行呈現。我們可以使用進度條(progressbar)的 `change` 回調,這等同于綁定 `progressbarchange` 事件。
```
$( "#elem" ).progressbar({
change: function() {
alert( "The value has changed!" );
}
});
```
### 公共的事件
大多數事件是針對特定的小部件,所有的小部件都有一個公共的 `create` 事件。該事件在小部件被創建時即被觸發。
- 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 擴展
- 免責聲明