Draggable
jQuery UI Draggable
Overview
The jQuery UI Draggable plugin makes selected elements draggable by mouse.
Draggable elements gets a class of ui-draggable
. During drag the element also gets a class of ui-draggable-dragging
. If you want not just drag, but drag-and-drop, see the jQuery UI Droppable plugin, which provides a drop target for draggables.
All callbacks (start, stop, drag) receive two arguments: The original browser event and a prepared ui object, view below for a documentation of this object (if you name your second argument 'ui'):
- ui.helper - the jQuery object representing the helper that's being dragged
- ui.position - current position of the helper as { top, left } object, relative to the offset element
- ui.offset - current absolute position of the helper as { top, left } object, relative to page
To manipulate the position of a draggable during drag, you can either use a wrapper as the draggable helper and position the wrapped element with absolute positioning, or you can correct internal values like so: $(this).data('draggable').offset.click.top -= x
.
Dependencies
- UI Core
- UI Widget
- UI Mouse
Example
$("#draggable").draggable();
<!DOCTYPE html> <html> <head> <link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/base/jquery-ui.css" rel="stylesheet" type="text/css"/> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"></script> <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js"></script> <style type="text/css"> #draggable { width: 100px; height: 70px; background: silver; } </style> <script> $(document).ready(function() { $("#draggable").draggable(); }); </script> </head> <body style="font-size:62.5%;"> <div id="draggable">Drag me</div> </body> </html>
Options
Events
Methods
-
destroy
- Signature:
- .draggable( "destroy" )
Remove the draggable functionality completely. This will return the element back to its pre-init state.
-
disable
- Signature:
- .draggable( "disable" )
Disable the draggable.
-
enable
- Signature:
- .draggable( "enable" )
Enable the draggable.
-
option
- Signature:
- .draggable( "option" , optionName , [value] )
Get or set any draggable option. If no value is specified, will act as a getter.
-
option
- Signature:
- .draggable( "option" , options )
Set multiple draggable options at once by providing an options object.
-
widget
- Signature:
- .draggable( "widget" )
Returns the .ui-draggable element.
Theming
The jQuery UI Draggable plugin uses the jQuery UI CSS Framework to style its look and feel, including colors and background textures. We recommend using the ThemeRoller tool to create and download custom themes that are easy to build and maintain.
If a deeper level of customization is needed, there are widget-specific classes referenced within the jquery.ui.draggable.css stylesheet that can be modified. These classes are highlighed in bold below.
Sample markup with jQuery UI CSS Framework classes
<div class="ui-draggable"></div>Note: This is a sample of markup generated by the draggable plugin, not markup you should use to create a draggable. The only markup needed for that is <div></div>.