# jQuery UI API - 可選擇小部件(Selectable Widget)
## 所屬類別
[交互(Interactions)](ref-interactions.html)
## 用法
**描述:**使用鼠標選擇單個元素或一組元素。
**版本新增:**1.0
**依賴:**
* [UI 核心(UI Core)](ref-ui-core.html)
* [部件庫(Widget Factory)](api-jQuery-widget.html)
* [鼠標交互(Mouse Interaction)](api-mouse.html)
**注釋:**jQuery UI 可選擇(Selectable)插件允許通過鼠標拖拽選擇元素(有時被稱為一個套索)。可以在按住 ctrl/meta 鍵的同時單擊或拖動來選擇多個(不連續的)元素。
**附加說明:**該部件要求一些功能性的 CSS,否則將無法工作。如果您創建了一個自定義的主題,請使用小部件指定的 CSS 文件作為起點。
### 快速導航
| 選項 | 方法 | 事件 |
| --- | --- | --- |
| [appendTo](#option-appendTo)[autoRefresh](#option-autoRefresh)[cancel](#option-cancel)[delay](#option-delay)[disabled](#option-disabled)[distance](#option-distance)[filter](#option-filter)[tolerance](#option-tolerance) | [destroy](#method-destroy)[disable](#method-disable)[enable](#method-enable)[option](#method-option)[refresh](#method-refresh)[widget](#method-widget) | [create](#event-create)[selected](#event-selected)[selecting](#event-selecting)[start](#event-start)[stop](#event-stop)[unselected](#event-unselected)[unselecting](#event-unselecting) |
#### appendTo
**類型**:Selector
**描述**:選擇助手(套索)要被添加到哪一個元素。
**代碼實例:**
初始化帶有指定 `appendTo` 選項的 draggable:
```
$( ".selector" ).selectable({ appendTo: "#someElem" });
```
在初始化后,獲取或設置 `appendTo` 選項:
```
// getter
var appendTo = $( ".selector" ).selectable( "option", "appendTo" );
// setter
$( ".selector" ).selectable( "option", "appendTo", "#someElem" );
```
**默認值**:"body"
#### autoRefresh
**類型**:Boolean
**描述**:該選項決定是否在每個選擇操作的開始時更新(重新計算)每個選擇項的位置和尺寸。如果您有多個項目,您可能要設置該選項為 false,并手動調用 `[refresh()](#method-refresh)` 方法。
**代碼實例:**
初始化帶有指定 `autoRefresh` 選項的 draggable:
```
$( ".selector" ).selectable({ autoRefresh: false });
```
在初始化后,獲取或設置 `autoRefresh` 選項:
```
// getter
var autoRefresh = $( ".selector" ).selectable( "option", "autoRefresh" );
// setter
$( ".selector" ).selectable( "option", "autoRefresh", false );
```
**默認值**:true
#### cancel
**類型**:Selector
**描述**:防止從匹配選擇器的元素上開始選擇。
**代碼實例:**
初始化帶有指定 `cancel` 選項的 selectable:
```
$( ".selector" ).selectable({ cancel: "a,.cancel" });
```
在初始化后,獲取或設置 `cancel` 選項:
```
// getter
var cancel = $( ".selector" ).selectable( "option", "cancel" );
// setter
$( ".selector" ).selectable( "option", "cancel", "a,.cancel" );
```
**默認值**:"input, textarea, button, select, option"
#### delay
**類型**:Number
**描述**:鼠標按下后直到選擇開始的時間,以毫秒計。該選項可以防止點擊在某個元素上時不必要的選擇。
**代碼實例:**
初始化帶有指定 `delay` 選項的 selectable:
```
$( ".selector" ).selectable({ delay: 150 });
```
在初始化后,獲取或設置 `delay` 選項:
```
// getter
var delay = $( ".selector" ).selectable( "option", "delay" );
// setter
$( ".selector" ).selectable( "option", "delay", 150 );
```
**默認值**:0
#### disabled
**類型**:Boolean
**描述**:如果設置為 `true`,則禁用該 selectable。
**代碼實例:**
初始化帶有指定 `disabled` 選項的 selectable:
```
$( ".selector" ).selectable({ disabled: true });
```
在初始化后,獲取或設置 `disabled` 選項:
```
// getter
var disabled = $( ".selector" ).selectable( "option", "disabled" );
// setter
$( ".selector" ).selectable( "option", "disabled", true );
```
**默認值**:false
#### distance
**類型**:Number
**描述**:鼠標按下后選擇開始前必須移動的距離,以像素計。如果指定了該選項,選擇只有在鼠標拖拽超出指定距離時才會開始。該選項可以防止點擊在某個元素上時不必要的選擇。
**代碼實例:**
初始化帶有指定 `distance` 選項的 selectable:
```
$( ".selector" ).selectable({ distance: 30 });
```
在初始化后,獲取或設置 `distance` 選項:
```
// getter
var distance = $( ".selector" ).selectable( "option", "distance" );
// setter
$( ".selector" ).selectable( "option", "distance", 30 );
```
**默認值**:0
#### filter
**類型**:Selector
**描述**:要制作選擇項(可被選擇的)的匹配的子元素。
**代碼實例:**
初始化帶有指定 `filter` 選項的 selectable:
```
$( ".selector" ).selectable({ filter: "li" });
```
在初始化后,獲取或設置 `filter` 選項:
```
// getter
var filter = $( ".selector" ).selectable( "option", "filter" );
// setter
$( ".selector" ).selectable( "option", "filter", "li" );
```
**默認值**:"*"
#### tolerance
**類型**:String
**描述**:指定用于測試套索是否選擇一個項目的模式。可能的值:
* `"fit"`:套索完全重疊在項目上。
* `"touch"`:套索重疊在項目上,任何比例皆可。
**代碼實例:**
初始化帶有指定 `tolerance` 選項的 selectable:
```
$( ".selector" ).selectable({ tolerance: "fit" });
```
在初始化后,獲取或設置 `tolerance` 選項:
```
// getter
var tolerance = $( ".selector" ).selectable( "option", "tolerance" );
// setter
$( ".selector" ).selectable( "option", "tolerance", "fit" );
```
**默認值**:"touch"
#### 方法
#### destroy()
**類型**:jQuery (plugin only)
**描述**:完全移除 selectable 功能。這會把元素返回到它的預初始化狀態。
* 該方法不接受任何參數。
**代碼實例:**
調用 destroy 方法:
```
$( ".selector" ).selectable( "destroy" );
```
#### disable()
**類型**:jQuery (plugin only)
**描述**:禁用 selectable。
* 該方法不接受任何參數。
**代碼實例:**
調用 disable 方法:
```
$( ".selector" ).selectable( "disable" );
```
#### enable()
**類型**:jQuery (plugin only)
**描述**:啟用 selectable。
* 該方法不接受任何參數。
**代碼實例:**
調用 enable 方法:
```
$( ".selector" ).selectable( "enable" );
```
#### option( optionName )
**類型**:Object
**描述**:獲取當前與指定的 `optionName` 關聯的值。
* **optionName**
類型:String
描述:要獲取的選項的名稱。
**代碼實例:**
調用該方法:
```
var isDisabled = $( ".selector" ).selectable( "option", "disabled" );
```
#### option()
**類型**:PlainObject
**描述**:獲取一個包含鍵/值對的對象,鍵/值對表示當前 selectable 選項哈希。
* 該方法不接受任何參數。
**代碼實例:**
調用該方法:
```
var options = $( ".selector" ).selectable( "option" );
```
#### option( optionName, value )
**類型**:jQuery (plugin only)
**描述**:設置與指定的 `optionName` 關聯的 selectable 選項的值。
* **optionName**
類型:String
描述:要設置的選項的名稱。
* **value**
類型:Object
描述:要為選項設置的值。
**代碼實例:**
調用該方法:
```
$( ".selector" ).selectable( "option", "disabled", true );
```
#### option( options )
**類型**:jQuery (plugin only)
**描述**:為 selectable 設置一個或多個選項。
* **options**
類型:Object
描述:要設置的 option-value 對。
**代碼實例:**
調用該方法:
```
$( ".selector" ).selectable( "option", { disabled: true } );
```
#### refresh()
**類型**:jQuery (plugin only)
**描述**:更新每個選擇項元素的位置和尺寸。當 `[autoRefresh](#option-autoRefresh)` 選項被設置為 false 時,該方法可用于手動重新計算每個選擇項的位置和尺寸。
* 該方法不接受任何參數。
**代碼實例:**
調用 refresh 方法:
```
$( ".selector" ).selectable( "refresh" );
```
#### widget()
**類型**:jQuery
**描述**:返回一個包含 selectable 元素的 `jQuery` 對象。
* 該方法不接受任何參數。
**代碼實例:**
調用 widget 方法:
```
var widget = $( ".selector" ).selectable( "widget" );
```
#### 事件
#### create( event, ui )
**類型**:selectablecreate
**描述**:當 selectable 被創建時觸發。
* **event**
類型:Event
* **ui**
類型:Object
注意:`ui` 對象是空的,這里包含它是為了與其他事件保持一致性。
**代碼實例:**
初始化帶有指定 create 回調的 selectable:
```
$( ".selector" ).selectable({
create: function( event, ui ) {}
});
```
綁定一個事件監聽器到 selectablecreate 事件:
```
$( ".selector" ).on( "selectablecreate", function( event, ui ) {} );
```
#### selected( event, ui )
**類型**:selectableselected
**描述**:當每個元素被添加選擇時,在選擇操作結尾觸發。
* **event**
類型:Event
* **ui**
類型:Object
* **selected**
類型:Element
描述:被選擇的可選擇項目。
**代碼實例:**
初始化帶有指定 selected 回調的 selectable:
```
$( ".selector" ).selectable({
selected: function( event, ui ) {}
});
```
綁定一個事件監聽器到 selectableselected 事件:
```
$( ".selector" ).on( "selectableselected", function( event, ui ) {} );
```
#### selecting( event, ui )
**類型**:selectableselecting
**描述**:當每個元素被添加選擇時,在選擇操作期間觸發。
* **event**
類型:Event
* **ui**
類型:Object
* **selecting**
類型:Element
描述:正被選擇的當前可選擇項目。
**代碼實例:**
初始化帶有指定 selecting 回調的 selectable:
```
$( ".selector" ).selectable({
selecting: function( event, ui ) {}
});
```
綁定一個事件監聽器到 selectableselecting 事件:
```
$( ".selector" ).on( "selectableselecting", function( event, ui ) {} );
```
#### start( event, ui )
**類型**:selectablestart
**描述**:在選擇操作開頭觸發。
* **event**
類型:Event
* **ui**
類型:Object
注意:`ui` 對象是空的,這里包含它是為了與其他事件保持一致性。
**代碼實例:**
初始化帶有指定 start 回調的 selectable:
```
$( ".selector" ).selectable({
start: function( event, ui ) {}
});
```
綁定一個事件監聽器到 selectablestart 事件:
```
$( ".selector" ).on( "selectablestart", function( event, ui ) {} );
```
#### stop( event, ui )
**類型**:selectablestop
**描述**:在選擇操作結尾觸發。
* **event**
類型:Event
* **ui**
類型:Object
注意:`ui` 對象是空的,這里包含它是為了與其他事件保持一致性。
**代碼實例:**
初始化帶有指定 stop 回調的 selectable:
```
$( ".selector" ).selectable({
stop: function( event, ui ) {}
});
```
綁定一個事件監聽器到 selectablestop 事件:
```
$( ".selector" ).on( "selectablestop", function( event, ui ) {} );
```
#### unselected( event, ui )
**類型**:selectableunselected
**描述**:當每個元素從選擇中被移除時,在選擇操作結尾觸發。
* **event**
類型:Event
* **ui**
類型:Object
* **unselected**
類型:Element
描述:未被選擇的可選擇項目。
**代碼實例:**
初始化帶有指定 unselected 回調的 selectable:
```
$( ".selector" ).selectable({
unselected: function( event, ui ) {}
});
```
綁定一個事件監聽器到 selectableunselected 事件:
```
$( ".selector" ).on( "selectableunselected", function( event, ui ) {} );
```
#### unselecting( event, ui )
**類型**:selectableunselecting
**描述**:當每個元素從選擇中被移除時,在選擇操作期間觸發。
* **event**
類型:Event
* **ui**
類型:Object
* **unselecting**
類型:Element
描述:正未被選擇的當前可選擇項目。
**代碼實例:**
初始化帶有指定 unselecting 回調的 selectable:
```
$( ".selector" ).selectable({
unselecting: function( event, ui ) {}
});
```
綁定一個事件監聽器到 selectableunselecting 事件:
```
$( ".selector" ).on( "selectableunselecting", function( event, ui ) {} );
```
## 實例
一個簡單的 jQuery UI 可選擇小部件(Selectable Widget)。
```
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>可選擇小部件(Selectable Widget)演示</title>
<link rel="stylesheet" href="//code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css">
<style>
#selectable .ui-selecting {
background: #ccc;
}
#selectable .ui-selected {
background: #999;
}
</style>
<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>
<ul id="selectable">
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
<li>Item 4</li>
<li>Item 5</li>
</ul>
<script>
$( "#selectable" ).selectable();
</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 擴展
- 免責聲明