jQuery UI API - 可拖拽小部件(Draggable Widget)
所屬類別
用法
描述:允許使用滑鼠移動元素。
版本新增:1.0
依賴:
注釋:讓被選元素可被滑鼠拖拽。如果您不只是拖拽,而是拖拽 & 放置,請查看 jQuery UI 可放置(Droppable)插件,為可拖拽元素提供了一個放置目標。
快速導航
| 選項 | 方法 | 事件 |
|---|---|---|
| 選項 | 類型 | 描述 | 默認值 |
|---|---|---|---|
| addClasses | Boolean | 如果設置為 false,將阻止 ui-draggable class 被添加。當在數百個元素上調用 .draggable() 時,這麼設置有利於性能優化。代碼實例: 初始化帶有指定
$( ".selector" ).draggable({ addClasses: false });
在初始化後,獲取或設置 // getter var addClasses = $( ".selector" ).draggable( "option", "addClasses" ); // setter $( ".selector" ).draggable( "option", "addClasses", false ); |
true |
| appendTo | jQuery 或 Element 或 Selector 或 String | 當拖拽時,draggable 助手(helper)要追加到哪一個元素。 支持多個類型:
代碼實例: 初始化帶有指定
$( ".selector" ).draggable({ appendTo: "body" });
在初始化後,獲取或設置 // getter var appendTo = $( ".selector" ).draggable( "option", "appendTo" ); // setter $( ".selector" ).draggable( "option", "appendTo", "body" ); |
"parent" |
| axis | String | 約束在水準軸 (x) 或垂直軸 (y) 上拖拽。可能的值:"x", "y"。代碼實例: 初始化帶有指定
$( ".selector" ).draggable({ axis: "x" });
在初始化後,獲取或設置 // getter var axis = $( ".selector" ).draggable( "option", "axis" ); // setter $( ".selector" ).draggable( "option", "axis", "x" ); |
false |
| cancel | Selector | 防止從指定的元素上開始拖拽。 代碼實例: 初始化帶有指定
$( ".selector" ).draggable({ cancel: ".title" });
在初始化後,獲取或設置 // getter var cancel = $( ".selector" ).draggable( "option", "cancel" ); // setter $( ".selector" ).draggable( "option", "cancel", ".title" ); |
"input, textarea, button, select, option" |
| connectToSortable | Selector | 允許 draggable 放置在指定的 sortable 上。如果使用了該選項,一個 draggable 可被放置在一個 sortable 列表上,然後成為列表的一部分。注意:helper 選項必須設置為 "clone",以便更好地工作。必須包含 可排序小部件(Sortable Widget)。代碼實例: 初始化帶有指定
$( ".selector" ).draggable({ connectToSortable: "#my-sortable" });
在初始化後,獲取或設置 // getter var connectToSortable = $( ".selector" ).draggable( "option", "connectToSortable" ); // setter $( ".selector" ).draggable( "option", "connectToSortable", "#my-sortable" ); |
false |
| containment | Selector 或 Element 或 String 或 Array | 約束在指定元素或區域的邊界內拖拽。 支持多個類型:
代碼實例: 初始化帶有指定
$( ".selector" ).draggable({ containment: "parent" });
在初始化後,獲取或設置 // getter var containment = $( ".selector" ).draggable( "option", "containment" ); // setter $( ".selector" ).draggable( "option", "containment", "parent" ); |
false |
| cursor | String | 拖拽操作期間的 CSS 游標。 代碼實例: 初始化帶有指定
$( ".selector" ).draggable({ cursor: "crosshair" });
在初始化後,獲取或設置 // getter var cursor = $( ".selector" ).draggable( "option", "cursor" ); // setter $( ".selector" ).draggable( "option", "cursor", "crosshair" ); |
"auto" |
| cursorAt | Object | 設置拖拽助手(helper)相對於滑鼠游標的偏移。座標可通過一個或兩個鍵的組合成一個哈希給出:{ top, left, right, bottom }。代碼實例: 初始化帶有指定
$( ".selector" ).draggable({ cursorAt: { left: 5 } });
在初始化後,獲取或設置
// getter
var cursorAt = $( ".selector" ).draggable( "option", "cursorAt" );
// setter
$( ".selector" ).draggable( "option", "cursorAt", { left: 5 } );
|
false |
| delay | Number | 滑鼠按下後直到拖拽開始為止的時間,以毫秒計。該選項可以防止點擊在某個元素上時不必要的拖拽。 代碼實例: 初始化帶有指定
$( ".selector" ).draggable({ delay: 300 });
在初始化後,獲取或設置 // getter var delay = $( ".selector" ).draggable( "option", "delay" ); // setter $( ".selector" ).draggable( "option", "delay", 300 ); |
0 |
| disabled | Boolean | 如果設置為 true,則禁用該 draggable。代碼實例: 初始化帶有指定
$( ".selector" ).draggable({ disabled: true });
在初始化後,獲取或設置 // getter var disabled = $( ".selector" ).draggable( "option", "disabled" ); // setter $( ".selector" ).draggable( "option", "disabled", true ); |
false |
| distance | Number | 滑鼠按下後拖拽開始前必須移動的距離,以像素計。該選項可以防止點擊在某個元素上時不必要的拖拽。 代碼實例: 初始化帶有指定
$( ".selector" ).draggable({ distance: 10 });
在初始化後,獲取或設置 // getter var distance = $( ".selector" ).draggable( "option", "distance" ); // setter $( ".selector" ).draggable( "option", "distance", 10 ); |
1 |
| grid | Array | 對齊拖拽助手(helper)到網格,每個 x 和 y 像素。數組形式必須是 [ x, y ]。代碼實例: 初始化帶有指定
$( ".selector" ).draggable({ grid: [ 50, 20 ] });
在初始化後,獲取或設置 // getter var grid = $( ".selector" ).draggable( "option", "grid" ); // setter $( ".selector" ).draggable( "option", "grid", [ 50, 20 ] ); |
false |
| handle | Selector 或 Element | 如果指定了該選項,則限制開始拖拽,除非滑鼠在指定的元素上按下。只有可拖拽(draggable)元素的後代元素才允許被拖拽。 代碼實例: 初始化帶有指定
$( ".selector" ).draggable({ handle: "h2" });
在初始化後,獲取或設置 // getter var handle = $( ".selector" ).draggable( "option", "handle" ); // setter $( ".selector" ).draggable( "option", "handle", "h2" ); |
false |
| helper | String 或 Function() | 允許一個 helper 元素用於拖拽顯示。 支持多個類型:
代碼實例: 初始化帶有指定
$( ".selector" ).draggable({ helper: "clone" });
在初始化後,獲取或設置 // getter var helper = $( ".selector" ).draggable( "option", "helper" ); // setter $( ".selector" ).draggable( "option", "helper", "clone" ); |
"original" |
| iframeFix | Boolean 或 Selector | 防止拖拽期間 iframes 捕捉滑鼠移動(mousemove )事件。在與 cursorAt 選項結合使用時,或滑鼠游標未覆蓋在助手(helper)上時,非常有用。支持多個類型:
代碼實例: 初始化帶有指定
$( ".selector" ).draggable({ iframeFix: true });
在初始化後,獲取或設置 // getter var iframeFix = $( ".selector" ).draggable( "option", "iframeFix" ); // setter $( ".selector" ).draggable( "option", "iframeFix", true ); |
false |
| opacity | Number | 當被拖拽時助手(helper)的不透明度。 代碼實例: 初始化帶有指定
$( ".selector" ).draggable({ opacity: 0.35 });
在初始化後,獲取或設置 // getter var opacity = $( ".selector" ).draggable( "option", "opacity" ); // setter $( ".selector" ).draggable( "option", "opacity", 0.35 ); |
false |
| refreshPositions | Boolean | 如果設置為 true,在每次滑鼠移動(mousemove)時都會計算所有可放置的位置。注意:這解決了高度動態的問題,但是明顯降低了性能。代碼實例: 初始化帶有指定
$( ".selector" ).draggable({ refreshPositions: true });
在初始化後,獲取或設置 // getter var refreshPositions = $( ".selector" ).draggable( "option", "refreshPositions" ); // setter $( ".selector" ).draggable( "option", "refreshPositions", true ); |
false |
| revert | Boolean 或 String 或 Function() | 當拖拽停止時,元素是否還原到它的開始位置。 支持多個類型:
代碼實例: 初始化帶有指定
$( ".selector" ).draggable({ revert: true });
在初始化後,獲取或設置 // getter var revert = $( ".selector" ).draggable( "option", "revert" ); // setter $( ".selector" ).draggable( "option", "revert", true ); |
false |
| revertDuration | Number | 還原(revert)動畫的持續時間,以毫秒計。如果 revert 選項是 false 則忽略。代碼實例: 初始化帶有指定
$( ".selector" ).draggable({ revertDuration: 200 });
在初始化後,獲取或設置 // getter var revertDuration = $( ".selector" ).draggable( "option", "revertDuration" ); // setter $( ".selector" ).draggable( "option", "revertDuration", 200 ); |
500 |
| scope | String | 用於組合配套 draggable 和 droppable 項,除了 droppable 的 accept 選項之外。一個與 droppable 帶有相同的 scope 值的 draggable 會被該 droppable 接受。代碼實例: 初始化帶有指定
$( ".selector" ).draggable({ scope: "tasks" });
在初始化後,獲取或設置 // getter var scope = $( ".selector" ).draggable( "option", "scope" ); // setter $( ".selector" ).draggable( "option", "scope", "tasks" ); |
"default" |
| scroll | Boolean | 如果設置為 true,當拖拽時容器會自動滾動。代碼實例: 初始化帶有指定
$( ".selector" ).draggable({ scroll: false });
在初始化後,獲取或設置 // getter var scroll = $( ".selector" ).draggable( "option", "scroll" ); // setter $( ".selector" ).draggable( "option", "scroll", false ); |
true |
| scrollSensitivity | Number | 從要滾動的視區邊緣起的距離,以像素計。距離是相對於指針的,不是相對於 draggable。如果 scroll 選項是 false 則忽略。代碼實例: 初始化帶有指定
$( ".selector" ).draggable({ scrollSensitivity: 100 });
在初始化後,獲取或設置 // getter var scrollSensitivity = $( ".selector" ).draggable( "option", "scrollSensitivity" ); // setter $( ".selector" ).draggable( "option", "scrollSensitivity", 100 ); |
20 |
| scrollSpeed | Number | 當滑鼠指針獲取到在 scrollSensitivity 距離內時,窗體滾動的速度。如果 scroll 選項是 false 則忽略。代碼實例: 初始化帶有指定
$( ".selector" ).draggable({ scrollSpeed: 100 });
在初始化後,獲取或設置 // getter var scrollSpeed = $( ".selector" ).draggable( "option", "scrollSpeed" ); // setter $( ".selector" ).draggable( "option", "scrollSpeed", 100 ); |
20 |
| snap | Boolean 或 Selector | 元素是否對齊到其他元素。 支持多個類型:
代碼實例: 初始化帶有指定
$( ".selector" ).draggable({ snap: true });
在初始化後,獲取或設置 // getter var snap = $( ".selector" ).draggable( "option", "snap" ); // setter $( ".selector" ).draggable( "option", "snap", true ); |
false |
| snapMode | String | 決定 draggable 將對齊到對齊元素的哪個邊緣。如果 snap 選項是 false 則忽略。可能的值:"inner"、"outer"、"both"。代碼實例: 初始化帶有指定
$( ".selector" ).draggable({ snapMode: "inner" });
在初始化後,獲取或設置 // getter var snapMode = $( ".selector" ).draggable( "option", "snapMode" ); // setter $( ".selector" ).draggable( "option", "snapMode", "inner" ); |
"both" |
| snapTolerance | Number | 從要發生對齊的對齊元素邊緣起的距離,以像素計。如果 snap 選項是 false 則忽略。代碼實例: 初始化帶有指定
$( ".selector" ).draggable({ snapTolerance: 30 });
在初始化後,獲取或設置 // getter var snapTolerance = $( ".selector" ).draggable( "option", "snapTolerance" ); // setter $( ".selector" ).draggable( "option", "snapTolerance", 30 ); |
20 |
| stack | Selector | 控制匹配選擇器(selector)的元素集合的 z-index,總是在當前拖拽項的前面,在類似窗口管理器這樣的事物中非常有用。 代碼實例: 初始化帶有指定
$( ".selector" ).draggable({ stack: ".products" });
在初始化後,獲取或設置 // getter var stack = $( ".selector" ).draggable( "option", "stack" ); // setter $( ".selector" ).draggable( "option", "stack", ".products" ); |
false |
| zIndex | Number | 當被拖拽時,助手(helper)的 Z-index。 代碼實例: 初始化帶有指定
$( ".selector" ).draggable({ zIndex: 100 });
在初始化後,獲取或設置 // getter var zIndex = $( ".selector" ).draggable( "option", "zIndex" ); // setter $( ".selector" ).draggable( "option", "zIndex", 100 ); |
false |
| 方法 | 返回 | 描述 |
|---|---|---|
| destroy() | jQuery (plugin only) | 完全移除 draggable 功能。這會把元素返回到它的預初始化狀態。
代碼實例: 調用 destroy 方法: $( ".selector" ).draggable( "destroy" ); |
| disable() | jQuery (plugin only) | 禁用 draggable。
代碼實例: 調用 disable 方法: $( ".selector" ).draggable( "disable" ); |
| enable() | jQuery (plugin only) | 啟用 draggable。
代碼實例: 調用 enable 方法: $( ".selector" ).draggable( "enable" ); |
| option( optionName ) | Object | 獲取當前與指定的 optionName 關聯的值。
代碼實例: 調用該方法: var isDisabled = $( ".selector" ).draggable( "option", "disabled" ); |
| option() | PlainObject | 獲取一個包含鍵/值對的對象,鍵/值對表示當前 draggable 選項哈希。
代碼實例: 調用該方法: var options = $( ".selector" ).draggable( "option" ); |
| option( optionName, value ) | jQuery (plugin only) | 設置與指定的 optionName 關聯的 draggable 選項的值。
代碼實例: 調用該方法: $( ".selector" ).draggable( "option", "disabled", true ); |
| option( options ) | jQuery (plugin only) | 為 draggable 設置一個或多個選項。
代碼實例: 調用該方法:
$( ".selector" ).draggable( "option", { disabled: true } );
|
| widget() | jQuery | 返回一個包含 draggable 元素的 jQuery 對象。
代碼實例: 調用 widget 方法: var widget = $( ".selector" ).draggable( "widget" ); |
| 事件 | 類型 | 描述 |
|---|---|---|
| create( event, ui ) | dragcreate | 當 draggable 被創建時觸發。
注意: 代碼實例: 初始化帶有指定 create 回調的 draggable:
$( ".selector" ).draggable({
create: function( event, ui ) {}
});
綁定一個事件監聽器到 dragcreate 事件:
$( ".selector" ).on( "dragcreate", function( event, ui ) {} );
|
| drag( event, ui ) | drag | 在拖拽期間當滑鼠移動時觸發。
代碼實例: 初始化帶有指定 drag 回調的 draggable:
$( ".selector" ).draggable({
drag: function( event, ui ) {}
});
綁定一個事件監聽器到 drag 事件:
$( ".selector" ).on( "drag", function( event, ui ) {} );
|
| start( event, ui ) | dragstart | 當拖拽開始時觸發。
代碼實例: 初始化帶有指定 start 回調的 draggable:
$( ".selector" ).draggable({
start: function( event, ui ) {}
});
綁定一個事件監聽器到 dragstart 事件:
$( ".selector" ).on( "dragstart", function( event, ui ) {} );
|
| stop( event, ui ) | dragstop | 當拖拽停止時觸發。
代碼實例: 初始化帶有指定 stop 回調的 draggable:
$( ".selector" ).draggable({
stop: function( event, ui ) {}
});
綁定一個事件監聽器到 dragstop 事件:
$( ".selector" ).on( "dragstop", function( event, ui ) {} );
|
實例
一個簡單的 jQuery UI 可拖拽小部件(Draggable Widget)。
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>可拖拽小部件(Draggable Widget)演示</title>
<link rel="stylesheet" href="//code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css">
<style>
#draggable {
width: 100px;
height: 100px;
background: #ccc;
}
</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>
<div id="draggable">請拖拽我!</div>
<script>
$( "#draggable" ).draggable();
</script>
</body>
</html>
