首页 > 代码库 > jQuery UI API - 可拖拽小部件(Draggable Widget)(转)

jQuery UI API - 可拖拽小部件(Draggable Widget)(转)

所属类别

交互(Interactions)

用法

描述:允许使用鼠标移动元素。

版本新增:1.0

依赖:

  • UI 核心(UI Core)
  • 部件库(Widget Factory)
  • 鼠标交互(Mouse Interaction)

 

注释:让被选元素可被鼠标拖拽。如果您不只是拖拽,而是拖拽 & 放置,请查看 jQuery UI 可放置(Droppable)插件,为可拖拽元素提供了一个放置目标。

快速导航

选项方法事件
addClasses
appendTo
axis
cancel
connectToSortable
containment
cursor
cursorAt
delay
disabled
distance
grid
handle
helper
iframeFix
opacity
refreshPositions
revert
revertDuration
scope
scroll
scrollSensitivity
scrollSpeed
snap
snapMode
snapTolerance
stack
zIndex
destroy
disable
enable
option
widget
create
drag
start
stop

选项类型描述默认值
addClassesBoolean如果设置为 false,将阻止 ui-draggable class 被添加。当在数百个元素上调用 .draggable() 时,这么设置有利于性能优化。

代码实例:

初始化带有指定 addClasses 选项的 draggable:

$( ".selector" ).draggable({ addClasses: false });	

在初始化后,获取或设置 addClasses 选项:

// gettervar addClasses = $( ".selector" ).draggable( "option", "addClasses" ); // setter$( ".selector" ).draggable( "option", "addClasses", false );	
true
appendTojQuery 或 Element 或 Selector 或 String当拖拽时,draggable 助手(helper)要追加到哪一个元素。

支持多个类型:

  • jQuery:一个 jQuery 对象,包含助手(helper)要追加到的元素。
  • Element:要追加助手(helper)的元素。
  • Selector:一个选择器,指定哪一个元素要追加助手(helper)。
  • String:字符串 "parent" 将促使助手(helper)成为 draggable 的同级。

代码实例:

初始化带有指定 appendTo 选项的 draggable:

$( ".selector" ).draggable({ appendTo: "body" });	

在初始化后,获取或设置 appendTo 选项:

// gettervar appendTo = $( ".selector" ).draggable( "option", "appendTo" ); // setter$( ".selector" ).draggable( "option", "appendTo", "body" );	
"parent"
axisString约束在水平轴 (x) 或垂直轴 (y) 上拖拽。可能的值:"x""y"

代码实例:

初始化带有指定 axis 选项的 draggable:

$( ".selector" ).draggable({ axis: "x" });	

在初始化后,获取或设置 axis 选项:

// gettervar axis = $( ".selector" ).draggable( "option", "axis" ); // setter$( ".selector" ).draggable( "option", "axis", "x" );	
false
cancelSelector防止从指定的元素上开始拖拽。

代码实例:

初始化带有指定 cancel 选项的 draggable:

$( ".selector" ).draggable({ cancel: ".title" });	

在初始化后,获取或设置 cancel 选项:

// gettervar cancel = $( ".selector" ).draggable( "option", "cancel" ); // setter$( ".selector" ).draggable( "option", "cancel", ".title" );	
"input, textarea, button, select, option"
connectToSortableSelector允许 draggable 放置在指定的 sortable 上。如果使用了该选项,一个 draggable 可被放置在一个 sortable 列表上,然后成为列表的一部分。注意:helper 选项必须设置为 "clone",以便更好地工作。必须包含 可排序小部件(Sortable Widget)。

代码实例:

初始化带有指定 connectToSortable 选项的 draggable:

$( ".selector" ).draggable({ connectToSortable: "#my-sortable" });	

在初始化后,获取或设置 connectToSortable 选项:

// gettervar connectToSortable = $( ".selector" ).draggable( "option", "connectToSortable" ); // setter$( ".selector" ).draggable( "option", "connectToSortable", "#my-sortable" );	
false
containmentSelector 或 Element 或 String 或 Array约束在指定元素或区域的边界内拖拽。

支持多个类型:

  • Selector:可拖拽元素将被包含在 selector 第一个元素的边界内。如果未找到元素,则不设置 containment。
  • Element:可拖拽元素将被韩寒在元素的边界。
  • String:可能的值:"parent""document""window"
  • Array:一个数组, 以形式 [ x1, y1, x2, y2 ] 定义元素的边界。

代码实例:

初始化带有指定 containment 选项的 draggable:

$( ".selector" ).draggable({ containment: "parent" });	

在初始化后,获取或设置 containment 选项:

// gettervar containment = $( ".selector" ).draggable( "option", "containment" ); // setter$( ".selector" ).draggable( "option", "containment", "parent" );	
false
cursorString拖拽操作期间的 CSS 光标。

代码实例:

初始化带有指定 cursor 选项的 draggable:

$( ".selector" ).draggable({ cursor: "crosshair" });	

在初始化后,获取或设置 cursor 选项:

// gettervar cursor = $( ".selector" ).draggable( "option", "cursor" ); // setter$( ".selector" ).draggable( "option", "cursor", "crosshair" );	
"auto"
cursorAtObject设置拖拽助手(helper)相对于鼠标光标的偏移。坐标可通过一个或两个键的组合成一个哈希给出:{ top, left, right, bottom }

代码实例:

初始化带有指定 cursorAt 选项的 draggable:

$( ".selector" ).draggable({ cursorAt: { left: 5 } });	

在初始化后,获取或设置 cursorAt 选项:

// gettervar cursorAt = $( ".selector" ).draggable( "option", "cursorAt" ); // setter$( ".selector" ).draggable( "option", "cursorAt", { left: 5 } );	
false
delayNumber鼠标按下后直到拖拽开始为止的时间,以毫秒计。该选项可以防止点击在某个元素上时不必要的拖拽。

代码实例:

初始化带有指定 delay 选项的 draggable:

$( ".selector" ).draggable({ delay: 300 });	

在初始化后,获取或设置 delay 选项:

// gettervar delay = $( ".selector" ).draggable( "option", "delay" ); // setter$( ".selector" ).draggable( "option", "delay", 300 );	
0
disabledBoolean如果设置为 true,则禁用该 draggable。

代码实例:

初始化带有指定 disabled 选项的 draggable:

$( ".selector" ).draggable({ disabled: true });	

在初始化后,获取或设置 disabled 选项:

// gettervar disabled = $( ".selector" ).draggable( "option", "disabled" ); // setter$( ".selector" ).draggable( "option", "disabled", true );	
false
distanceNumber鼠标按下后拖拽开始前必须移动的距离,以像素计。该选项可以防止点击在某个元素上时不必要的拖拽。

代码实例:

初始化带有指定 distance 选项的 draggable:

$( ".selector" ).draggable({ distance: 10 });	

在初始化后,获取或设置 distance 选项:

// gettervar distance = $( ".selector" ).draggable( "option", "distance" ); // setter$( ".selector" ).draggable( "option", "distance", 10 );	
1
gridArray对齐拖拽助手(helper)到网格,每个 x 和 y 像素。数组形式必须是 [ x, y ]

代码实例:

初始化带有指定 grid 选项的 draggable:

$( ".selector" ).draggable({ grid: [ 50, 20 ] });	

在初始化后,获取或设置 grid 选项:

// gettervar grid = $( ".selector" ).draggable( "option", "grid" ); // setter$( ".selector" ).draggable( "option", "grid", [ 50, 20 ] );	
false
handleSelector 或 Element如果指定了该选项,则限制开始拖拽,除非鼠标在指定的元素上按下。只有可拖拽(draggable)元素的后代元素才允许被拖拽。

代码实例:

初始化带有指定 handle 选项的 draggable:

$( ".selector" ).draggable({ handle: "h2" });	

在初始化后,获取或设置 handle 选项:

// gettervar handle = $( ".selector" ).draggable( "option", "handle" ); // setter$( ".selector" ).draggable( "option", "handle", "h2" );	
false
helperString 或 Function()允许一个 helper 元素用于拖拽显示。

支持多个类型:

  • String:如果设置为 "clone",元素将被克隆,且克隆将被拖拽。
  • Function:一个函数,将返回拖拽时要使用的 DOMElement。

代码实例:

初始化带有指定 helper 选项的 draggable:

$( ".selector" ).draggable({ helper: "clone" });	

在初始化后,获取或设置 helper 选项:

// gettervar helper = $( ".selector" ).draggable( "option", "helper" ); // setter$( ".selector" ).draggable( "option", "helper", "clone" );	
"original"
iframeFixBoolean 或 Selector防止拖拽期间 iframes 捕捉鼠标移动(mousemove )事件。在与 cursorAt选项结合使用时,或鼠标光标未覆盖在助手(helper)上时,非常有用。

支持多个类型:

  • Boolean:当设置为 true 时,透明遮罩将被放置在页面上所有 iframes 上。
  • Selector:匹配 selector 的任意 iframes 将被透明遮罩覆盖。

代码实例:

初始化带有指定 iframeFix 选项的 draggable:

$( ".selector" ).draggable({ iframeFix: true });	

在初始化后,获取或设置 iframeFix 选项:

// gettervar iframeFix = $( ".selector" ).draggable( "option", "iframeFix" ); // setter$( ".selector" ).draggable( "option", "iframeFix", true );	
false
opacityNumber当被拖拽时助手(helper)的不透明度。

代码实例:

初始化带有指定 opacity 选项的 draggable:

$( ".selector" ).draggable({ opacity: 0.35 });	

在初始化后,获取或设置 opacity 选项:

// gettervar opacity = $( ".selector" ).draggable( "option", "opacity" ); // setter$( ".selector" ).draggable( "option", "opacity", 0.35 );	
false
refreshPositionsBoolean如果设置为 true,在每次鼠标移动(mousemove)时都会计算所有可放置的位置。注意:这解决了高度动态的问题,但是明显降低了性能。

代码实例:

初始化带有指定 refreshPositions 选项的 draggable:

$( ".selector" ).draggable({ refreshPositions: true });	

在初始化后,获取或设置 refreshPositions 选项:

// gettervar refreshPositions = $( ".selector" ).draggable( "option", "refreshPositions" ); // setter$( ".selector" ).draggable( "option", "refreshPositions", true );	
false
revertBoolean 或 String 或 Function()当拖拽停止时,元素是否还原到它的开始位置。

支持多个类型:

  • Boolean:如果设置为 true,元素总会还原。
  • String:如果设置为 "invalid",还原仅在 draggable 未放置在 droppable 上时发生,如果设置为 "valid" 则相反。
  • Function:一个函数,确定元素是否还原到它的开始位置。该函数必须返回 true 才能还原元素。

代码实例:

初始化带有指定 revert 选项的 draggable:

$( ".selector" ).draggable({ revert: true });	

在初始化后,获取或设置 revert 选项:

// gettervar revert = $( ".selector" ).draggable( "option", "revert" ); // setter$( ".selector" ).draggable( "option", "revert", true );	
false
revertDurationNumber还原(revert)动画的持续时间,以毫秒计。如果 revert 选项是 false 则忽略。

代码实例:

初始化带有指定 revertDuration 选项的 draggable:

$( ".selector" ).draggable({ revertDuration: 200 });	

在初始化后,获取或设置 revertDuration 选项:

// gettervar revertDuration = $( ".selector" ).draggable( "option", "revertDuration" ); // setter$( ".selector" ).draggable( "option", "revertDuration", 200 );	
500
scopeString用于组合配套 draggable 和 droppable 项,除了 droppable 的 accept 选项之外。一个与 droppable 带有相同的 scope 值的 draggable 会被该 droppable 接受。

代码实例:

初始化带有指定 scope 选项的 draggable:

$( ".selector" ).draggable({ scope: "tasks" });	

在初始化后,获取或设置 scope 选项:

// gettervar scope = $( ".selector" ).draggable( "option", "scope" ); // setter$( ".selector" ).draggable( "option", "scope", "tasks" );	
"default"
scrollBoolean如果设置为 true,当拖拽时容器会自动滚动。

代码实例:

初始化带有指定 scroll 选项的 draggable:

$( ".selector" ).draggable({ scroll: false });	

在初始化后,获取或设置 scroll 选项:

// gettervar scroll = $( ".selector" ).draggable( "option", "scroll" ); // setter$( ".selector" ).draggable( "option", "scroll", false );	
true
scrollSensitivityNumber从要滚动的视区边缘起的距离,以像素计。距离是相对于指针的,不是相对于 draggable。如果 scroll 选项是 false 则忽略。

代码实例:

初始化带有指定 scrollSensitivity 选项的 draggable:

$( ".selector" ).draggable({ scrollSensitivity: 100 });	

在初始化后,获取或设置 scrollSensitivity 选项:

// gettervar scrollSensitivity = $( ".selector" ).draggable( "option", "scrollSensitivity" ); // setter$( ".selector" ).draggable( "option", "scrollSensitivity", 100 );	
20
scrollSpeedNumber当鼠标指针获取到在 scrollSensitivity 距离内时,窗体滚动的速度。如果scroll 选项是 false 则忽略。

代码实例:

初始化带有指定 scrollSpeed 选项的 draggable:

$( ".selector" ).draggable({ scrollSpeed: 100 });	

在初始化后,获取或设置 scrollSpeed 选项:

// gettervar scrollSpeed = $( ".selector" ).draggable( "option", "scrollSpeed" ); // setter$( ".selector" ).draggable( "option", "scrollSpeed", 100 );	
20
snapBoolean 或 Selector元素是否对齐到其他元素。

支持多个类型:

  • Boolean:当设置为 true 时,元素会对齐到其它可拖拽(draggable )元素。
  • Selector:一个选择器,指定要对齐到哪个元素。

代码实例:

初始化带有指定 snap 选项的 draggable:

$( ".selector" ).draggable({ snap: true });	

在初始化后,获取或设置 snap 选项:

// gettervar snap = $( ".selector" ).draggable( "option", "snap" ); // setter$( ".selector" ).draggable( "option", "snap", true );	
false
snapModeString决定 draggable 将对齐到对齐元素的哪个边缘。如果 snap 选项是 false 则忽略。可能的值:"inner""outer""both"

代码实例:

初始化带有指定 snapMode 选项的 draggable:

$( ".selector" ).draggable({ snapMode: "inner" });	

在初始化后,获取或设置 snapMode 选项:

// gettervar snapMode = $( ".selector" ).draggable( "option", "snapMode" ); // setter$( ".selector" ).draggable( "option", "snapMode", "inner" );	
"both"
snapToleranceNumber从要发生对齐的对齐元素边缘起的距离,以像素计。如果 snap 选项是 false则忽略。

代码实例:

初始化带有指定 snapTolerance 选项的 draggable:

$( ".selector" ).draggable({ snapTolerance: 30 });	

在初始化后,获取或设置 snapTolerance 选项:

// gettervar snapTolerance = $( ".selector" ).draggable( "option", "snapTolerance" ); // setter$( ".selector" ).draggable( "option", "snapTolerance", 30 );	
20
stackSelector控制匹配选择器(selector)的元素集合的 z-index,总是在当前拖拽项的前面,在类似窗口管理器这样的事物中非常有用。

代码实例:

初始化带有指定 stack 选项的 draggable:

$( ".selector" ).draggable({ stack: ".products" });	

在初始化后,获取或设置 stack 选项:

// gettervar stack = $( ".selector" ).draggable( "option", "stack" ); // setter$( ".selector" ).draggable( "option", "stack", ".products" );	
false
zIndexNumber当被拖拽时,助手(helper)的 Z-index。

代码实例:

初始化带有指定 zIndex 选项的 draggable:

$( ".selector" ).draggable({ zIndex: 100 });	

在初始化后,获取或设置 zIndex 选项:

// gettervar 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 关联的值。
  • optionName
    类型:String
    描述:要获取的选项的名称。

代码实例:

调用该方法:

var isDisabled = $( ".selector" ).draggable( "option", "disabled" );	
option()PlainObject获取一个包含键/值对的对象,键/值对表示当前 draggable 选项哈希。
  • 该方法不接受任何参数。

代码实例:

调用该方法:

var options = $( ".selector" ).draggable( "option" );	
option( optionName, value )jQuery (plugin only)设置与指定的 optionName 关联的 draggable 选项的值。
  • optionName
    类型:String
    描述:要设置的选项的名称。
  • value
    类型:Object
    描述:要为选项设置的值。

代码实例:

调用该方法:

$( ".selector" ).draggable( "option", "disabled", true );	
option( options )jQuery (plugin only)为 draggable 设置一个或多个选项。
  • options
    类型:Object
    描述:要设置的 option-value 对。

代码实例:

调用该方法:

$( ".selector" ).draggable( "option", { disabled: true } );	
widget()jQuery返回一个包含 draggable 元素的 jQuery 对象。
  • 该方法不接受任何参数。

代码实例:

调用 widget 方法:

var widget = $( ".selector" ).draggable( "widget" );	

事件类型描述
create( event, ui )dragcreate当 draggable 被创建时触发。
  • event
    类型:Event
  • ui
    类型:Object

注意:ui 对象是空的,这里包含它是为了与其他事件保持一致性。

代码实例:

初始化带有指定 create 回调的 draggable:

$( ".selector" ).draggable({  create: function( event, ui ) {}});	

绑定一个事件监听器到 dragcreate 事件:

$( ".selector" ).on( "dragcreate", function( event, ui ) {} );	
drag( event, ui )drag在拖拽期间当鼠标移动时触发。
  • event
    类型:Event
  • ui
    类型:Object
    • helper
      类型:jQuery
      描述:jQuery 对象,表示被拖拽的助手(helper)。
    • position
      类型:Object
      描述:助手(helper)的当前 CSS 位置,比如 { top, left } 对象。
    • offset
      类型:Object
      描述:助手(helper)的当前偏移位置,比如 { top, left } 对象。

代码实例:

初始化带有指定 drag 回调的 draggable:

$( ".selector" ).draggable({  drag: function( event, ui ) {}});	

绑定一个事件监听器到 drag 事件:

$( ".selector" ).on( "drag", function( event, ui ) {} );	
start( event, ui )dragstart当拖拽开始时触发。
  • event
    类型:Event
  • ui
    类型:Object
    • helper
      类型:jQuery
      描述:jQuery 对象,表示被拖拽的助手(helper)。
    • position
      类型:Object
      描述:助手(helper)的当前 CSS 位置,比如 { top, left } 对象。
    • offset
      类型:Object
      描述:助手(helper)的当前偏移位置,比如 { top, left } 对象。

代码实例:

初始化带有指定 start 回调的 draggable:

$( ".selector" ).draggable({  start: function( event, ui ) {}});	

绑定一个事件监听器到 dragstart 事件:

$( ".selector" ).on( "dragstart", function( event, ui ) {} );	
stop( event, ui )dragstop当拖拽停止时触发。
  • event
    类型:Event
  • ui
    类型:Object
    • helper
      类型:jQuery
      描述:jQuery 对象,表示被拖拽的助手(helper)。
    • position
      类型:Object
      描述:助手(helper)的当前 CSS 位置,比如 { top, left } 对象。
    • offset
      类型:Object
      描述:助手(helper)的当前偏移位置,比如 { top, left } 对象。

代码实例:

初始化带有指定 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="http://code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css">  <style>  #draggable {    width: 100px;    height: 100px;    background: #ccc;  }  </style>  <script src="http://code.jquery.com/jquery-1.10.2.js"></script>  <script src="http://code.jquery.com/ui/1.10.4/jquery-ui.js"></script></head><body> <div id="draggable">请拖拽我!</div> <script>$( "#draggable" ).draggable();</script> </body></html>

 

jQuery UI API - 可拖拽小部件(Draggable Widget)(转)