0

这是我的问题:
我正在构建的系统需要 jQuery 的可拖动函数的自定义版本。
问题是我无法包含元素本身,我尝试了几种方法。

小提琴:http : //jsfiddle.net/f8w8v/18/

方法1

        var mouseStartPosition = {
                x: event.pageX,
                y: event.pageY,
            },
            elementPosition = {
                left: parseInt($sender.css('left')),
                top: parseInt($sender.css('top')),
            };

        $(window).on('mousemove',function(esub){
            var subEvent = eventData(esub).event,
                subSender = eventData(esub).sender,
                $subSender = $(subSender),
                mx = (subEvent.pageX - mouseStartPosition.x) || 0,
                my = (subEvent.pageY - mouseStartPosition.y) || 0,
                position = {
                    left : (parseInt($subSender.offset().left) <= 0) ? 0 : (elementPosition.left + mx),
                    top : (parseInt($subSender.offset().top) <= 0) ? 0 : (elementPosition.top + my),
                };
            $sender.css(position);
        });

使用此方法会导致元素对齐到 0px,但即使偏移量低于 0,它也会在 mousemove 上对齐。


方法二

if(position.left <= 0){ 
    $sender.css('left','0px');
    return false; 
} else if( position.top <= 0) { 
    $sender.css('top','0px');
    return false;
} else {
    $sender.css(position); 
}

此方法的反应方式相同,但更糟糕的是,使用 return false 会导致元素忽略鼠标在相反轴上的移动。其余代码与方法 2 相同。

摘要: 我不知道如何控制移动

4

0 回答 0