我想在拖动父元素和元素本身时移动子元素,并且不应移动父元素。
这是我的demo
在演示中,我想在拖动它时移动红色框或拖动它的父(背景),但我无法计算正确的位置,你能帮我吗?
其他问题是,当我设置off
时我无法mousemove event
.off('mousemove', mousemove')
非常感谢你
答案 0 :(得分:1)
我做了一些改变。这有效;)
$(function(){
var graph = $('.graph')[0];
var parent = $(graph).parent();
var lockX = 0;
var lockY = 0;
var mousemove = function(e){
$(graph).offset({
top: e.pageY + lockY,
left: e.pageX + lockX
});
};
parent.on('mousedown', function(e) {
lockY = $(graph).offset().top - e.pageY;
lockX = $(graph).offset().left - e.pageX;
$(this).addClass('draggable')
.on('mousemove', mousemove)
.on('mouseup', function(){
$(this).off('mousemove', mousemove)
})
event.preventDefault()
});
$('.graph').parent().on('mouseup', function(e) {
$('.draggable')
.off('mousemove', mousemove)
.removeClass('draggable');
});
});
我做的唯一实际改变是:
.offset({
// instead of: e.pageY - $('.draggable').outerHeight() / 2 + dtop
top: e.pageY + dtop,
// instead of: e.pageX - $('.draggable').outerWidth() / 2 + dleft
left: e.pageX + dleft
})
PS:在JS Fiddle的示例中,我将dleft
和dtop
分别更改为lockX
和lockY
。当然,这是一个纯粹的语义事物。