jQuery UI & Draggable: Visual Feedback

This entry is part 5 of 11 in the series jQuery UI Draggable

jQuery UI Draggable – Visual feedback

Provide feedback to users as they drag an object in the form of a helper. The helper option accepts the values ‘original’ (the draggable object moves with the cursor), ‘clone’ (a duplicate of the draggable moves with the cursor), or a function that returns a DOM element (that element is shown near the cursor during drag). Control the helper’s transparency with the opacity option.

To clarify which draggable is in play, bring the draggable in motion to front. Use the zIndex option to set a higher z-index for the helper, if in play, or use the stack option to ensure that the last item dragged will appear on top of others in the same group on drag stop.

<!doctype html>
<html lang="en">
    <meta charset="utf-8">
    <title>jQuery UI Draggable - Visual feedback</title>
    <link rel="stylesheet" href="//code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css">
    <script src="//code.jquery.com/jquery-1.9.1.js"></script>
    <script src="//code.jquery.com/ui/1.10.4/jquery-ui.js"></script>
    <link rel='stylesheet' href='https://codecrawl.com/code/jqueryui/jqueryui_style.css'>
        #draggable, #draggable2, #draggable3, #set div {
            width: 90px;
            height: 90px;
            padding: 0.5em;
            float: left;
            margin: 0 10px 10px 0;

        #draggable, #draggable2, #draggable3 {
            margin-bottom: 20px;

        #set {
            clear: both;
            float: left;
            width: 368px;
            height: 120px;

        p {
            clear: both;
            margin: 0;
            padding: 1em 0;
        $(function () {
            $("#draggable").draggable({ helper: "original" });
            $("#draggable2").draggable({ opacity: 0.7, helper: "clone" });
                cursor: "move",
                cursorAt: { top: -12, left: -20 },
                helper: function (event) {
                    return $("<div class='ui-widget-header'>I'm a custom helper</div>");
            $("#set div").draggable({ stack: "#set div" });

<h3 class="docs">With helpers:</h3>

<div id="draggable" class="ui-widget-content">

<div id="draggable2" class="ui-widget-content">
    <p>Semi-transparent clone</p>

<div id="draggable3" class="ui-widget-content">
    <p>Custom helper (in combination with cursorAt)</p>

<div id="set">
    <h3 class="docs">Stacked:</h3>
    <div class="ui-widget-content">
        <p>We are draggables..</p>

    <div class="ui-widget-content">
        <p>..whose z-indexes are controlled automatically..</p>

    <div class="ui-widget-content">
        <p>..with the stack option.</p>

Try The Code

With the stack option, the last one dragged will always be on top of the others.

Series Navigation<< jQuery UI & Draggable: Sortable
jQuery UI & Draggable: Delay Start >>