Javascript 如何以与jquery UI拖动的第一个div相同的速率移动第二个div?
如果我有2个Javascript 如何以与jquery UI拖动的第一个div相同的速率移动第二个div?,javascript,jquery,html,jquery-ui,Javascript,Jquery,Html,Jquery Ui,如果我有2个,a和b是绝对定位的独立div。如果我拖动DIV B,它可以移动到任何地方。如果我拖动A,那么DIV B将以与DIV A相同的偏移量移动 然而,到目前为止我所知道的是,尽管可以将div B放在我想要的任何地方。在移动div A时,div B只会弹回到div A旁边的位置 $('.a, .b').draggable({ drag: function(event, ui) { $('.a').css({ top: ui.offset.top
,a和b是绝对定位的独立div。如果我拖动DIV B,它可以移动到任何地方。如果我拖动A,那么DIV B将以与DIV A相同的偏移量移动
然而,到目前为止我所知道的是,尽管可以将div B放在我想要的任何地方。在移动div A时,div B只会弹回到div A旁边的位置
$('.a, .b').draggable({
drag: function(event, ui) {
$('.a').css({
top: ui.offset.top + 'px',
left: ui.offset.left + 100 + 'px'
});
}
});
有什么方法可以添加某种“鼠标偏移”来实现此功能吗?请检查此项。这可能会解决你的问题,我认为:
$('#div1').draggable({
drag: function(event, ui) {
$('#div2').css({
top: ui.offset.top + 'px',
left: ui.offset.left + 100 + 'px'
});
}
});
你可以通过稍微不同地思考这个问题来达到预期的效果。将B嵌套在A中可以让您轻松完成此操作(尽管有IE解决方案): HTML:
<div class='a' style="position:relative;">
<p>div A</p>
<div class='b' style="position:absolute;">div B</div>
</div>
$('.a, .b').draggable({
});
// IE sucks, so must prevent bubbling on inner div else both divs
// become draggable with strange results
$('.b').mousedown(function(e) {
if($.browser.msie) {
e.stopPropagation();
}
});
试试这个:
$(function(){
$('.a, .b').draggable({
start: function(){
if($(this).hasClass('b')){
var p = $(this).position();
$(this).data('lastLeft',p.left);
$(this).data('lastTop',p.top);
}
},
stop: function(){
if($(this).hasClass('b')){
$(this).removeData('lastLeft');
$(this).removeData('lastTop');
}
},
drag: function(event, ui) {
if($(this).hasClass('b')){
var p = $(this).position();
$(this).data('lastLeft',p.left);
$(this).data('lastTop',p.top);
var dx = ui.position.left - $(this).data('lastLeft');
var dy = ui.position.top - $(this).data('lastTop');
$('.a').each(function(){
var p = $(this).position();
$(this).css({
left: (p.left + dx) + "px",
top: (p.top + dy) + "px"
});
});
}
}
});
});
正在使用的JSIDLE演示:
它基本上会在每次鼠标移动时保存B的起始位置,以便下次可以计算偏移量。很好的尝试,但不是很好。请注意,当您在将div2移动到某个位置后移动div1时,div2会捕捉回其附加到div1的原始位置。。。真正的解决方案是让div2停留在它移动的位置,但当移动div1时,div2移动的偏移量与div1移动的偏移量相同。不过这是一个开始。