这是我的问题:
我正在构建的系统需要 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 相同。
摘要: 我不知道如何控制移动