Skip to content
Create a gist now

Instantly share code, notes, and snippets.

Embed URL


Subversion checkout URL

You can clone with
Download ZIP
jQuery plugin to make elements draggable without jQuery UI. Usage: view source on
alternative to jQuery UI’s draggable
based on comments from:
usage example: $('.post-thumbnail, article header').draggable();
(function($) {
if (!jQuery().draggable) {
$.fn.draggable = function() {
.css('cursor', 'move')
.on('mousedown touchstart', function(e) {
var $dragged = $(this);
var x = $dragged.offset().left - e.pageX,
y = $dragged.offset().top - e.pageY,
z = $dragged.css('z-index');
if (!$.fn.draggable.stack) {
$.fn.draggable.stack = 999;
stack = $.fn.draggable.stack;
.on('mousemove.draggable touchmove.draggable', function(e) {
.css({'z-index': stack, 'transform': 'scale(1.1)', 'transition': 'transform .3s', 'bottom': 'auto', 'right': 'auto'})
left: x + e.pageX,
top: y + e.pageY
.find('a').one('click.draggable', function(e) {
.one('mouseup touchend touchcancel', function() {
$(this).off('mousemove.draggable touchmove.draggable click.draggable');
$dragged.css({'z-index': stack, 'transform': 'scale(1)'})
return this;

nice code, thnx alot for share it. one question:
often, u have a container div and many child div inside it, something like 'header','main', 'footer' and ...
is there a way to drag whole them (container and it's child) when drag one of them such as 'header' div ?


Not with this particular code I'm afraid, but it can be done.


This seems to work great. However, what the $.drags() did well was when dragging on a scaled div, the draggable div didn't expand. On this one it does while dragging. If that makes any sense.


how can I disable draggable.. i mean i want to enable it on click. and in the next click it should get disabled.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.