1

我正在尝试使 div 可移动。div 有子 div 元素。你可以在这里查看 jsfiddle:http: //jsfiddle.net/TsW5F/2/

我只希望容器(在大多数 div 之外)是可移动的。目前,内部文本可以在没有外部 div 的情况下移动。最外层的容器 div 应该始终与其余的子元素一起移动。

    <div id="id">
           <div>second div</div>
           <div>third element</div>
   </div>

$(document).ready(function() {
    var $dragging = null;

    $(document.body).on("mousemove", function(e) {
        if ($dragging) {
            $dragging.offset({
                top: e.pageY,
                left: e.pageX
            });
        }
    });

    $('#id').on("mousedown", null , function (e) {
        $dragging = $(e.target);
    });

    $(document.body).on("mouseup", function (e) {
        $dragging = null;
    });
});
4

2 回答 2

4

问题是线$dragging = $(e.target);,而不是使用$dragging = $(this);

$(document).ready(function () {
    var $dragging = null;

    $(document.body).on("mousemove", function (e) {
        if ($dragging) {
            $dragging.offset({
                top: e.pageY,
                left: e.pageX
            });
        }
    });

    $('#id').on("mousedown", null, function (e) {
        $dragging = $(this);
    });

    $(document.body).on("mouseup", function (e) {
        $dragging = null;
    });
});

演示:小提琴

于 2013-10-01T08:22:11.017 回答
3

只需检查拖动开始它实际上是父 div:

http://jsfiddle.net/TsW5F/4/

$('#id').on("mousedown", null , function (e) {
    if ($('#id').is(e.target))
    {
        $dragging = $(e.target);
    }
});

正如 Arun P Johny 在 $(this) 之后指出的那样,将给出 JQuery 目标而不是鼠标目标。这意味着$dragging = $(this)更整洁,更简单。

于 2013-10-01T08:21:34.117 回答