Draggable Without JQuery UI

HTML

<div class="rel">
    <div class="draggable"></div>
    <div class="draggable">
        <div class="nope">Not draggable<br/>area.
            <div class="draggable lvl2">Draggable<br/> again</div>
        </div>
    </div>
    <div class="draggable"></div>
    <div class="draggable"></div>
    <div class="draggable"></div>
</div>

CSS

body {
    padding:50px;
}
.rel {
    /* correctly works in relative container */
    position: relative;
    background-color: #eee;
    margin: 4em 0 0 2em;
    height: 88px;
}
.rel>div.draggable {
    cursor:move;
    min-width:80px;
    min-height:80px;
    border-radius:5px;
    background-color:#00A2E8;
    border:1px dashed black;
    margin:3px;
    float:left;
}
.lvl2 {
    cursor:move;
    min-width:60px;
    min-height:60px;
    border-radius:5px;
    background-color:#e22;
    border:1px dashed black;
    margin:3px;
    float:left;
}
.nope {
    margin: 1em;
    padding: 5px;
    background: green;
    font-weight: bold;
    text-align: center;
}
div.dragged {
    background-color:yellow !important;
}

JavaScript

$(function () {
    $('body').on('mousedown', '.draggable', function (e) {
        if ($(this)[0] === $(e.target)[0]) { // not for inner elements
            var offset = $(this).offset();
            var grabX = e.pageX - offset.left;
            var grabY = e.pageY - offset.top;
            $(this).addClass('dragged').parents().on('mousemove', function (e) {
                $('.dragged').offset({
                    top: e.pageY - grabY,
                    left: e.pageX - grabX
                }).on('mouseup', function () {
                    $(this).removeClass('dragged');
                });
            });
            e.preventDefault();
            //e.stopPropagation();
        }
    }).on('mouseup', '.dragged', function () {
        $(this).removeClass('dragged');
    });
});