onbeforemousemove以获得鼠标的旧位置?

时间:2013-04-20 22:43:28

标签: javascript jquery events drag-and-drop mouse

我正在拖放lib,我想将鼠标的位置变化添加到拖动元素的实际位置,而不是仅将其位置设置为窗口中的当前光标位置。这将允许我不使用position:fixed并能够相对/绝对地拖动位置;元件。

要知道鼠标的旧位置(在调用mousemove处理程序之前),我可以使用e.pageX和pageY将位置存储在上一次调用该处理程序的变量中。但是第一次移动鼠标处理程序呢? 当我还没有保存那个旧位置时,我怎么知道老鼠的位置以确定它的变化呢?

一段代码:

    var $dragged = null,
        $window = $(window),
        oldMouseX = null,
        oldMouseY = null;

    var mouseMoveHandler = function(e) {
        var curTop = $dragged.css('top'),
            curLeft = $dragged.css('left');
        $dragged.css({
            top  : curTop + e.pageY - oldMouseY,
            left : curLeft + e.pageX - oldMouseX,
        });
        oldMouseX = e.pageX;
        oldMouseY = e.pageY;
    };

    $('.Draggable')

        .attr('draggable', true)

        .css({userSelect: 'none'})

        .on('mousedown', function() {
            $dragged = $(this);
            $window.bind('mousemove', mouseMoveHandler);
        })
        .on('mouseup', function() {
            $dragged = null;
            $window.unbind('mousemove', mouseMoveHandler);
        })

0 个答案:

没有答案