放置/放置元素时(通过从一个DIV拖动到另一个DIV)然后删除掉落的DIV中的一个,其中一些正在改变位置。
以下是测试方案:http://jsfiddle.net/TcYHW/8/
主要代码:
<div id="dropwin"></div>
<div id="dragables">
<div id="d1" class="d"></div>
<div id="d2" class="d"></div>
<div id="d3" class="d"></div>
<div id="d4" class="d"></div>
</div>
$(".d").draggable({
containment: '#dropwin',
stack: '#dragables div',
cursor: 'move',
});
我该如何避免这种情况?
我发现,元素放置在起始位置的相对位置。即使有些东西被移除,我怎样才能让它们粘在掉落的位置?
我发现了两个近乎相似的问题,但没有一个令人满意的答案:
Remove in Jquery divs with draggables and resizables
jQuery draggable removing without changing position of other elements
答案 0 :(得分:4)
您需要定位元素absolute
。然后删除的框不会影响其他元素的流动。
您可以使用css定位absolute
:
.d {
width: 50px;
height: 50px;
margin: 10px;
display: inline-block;
position: absolute;
}
但是你必须手动放置每个盒子。诀窍是让他们定位static
(或relative
.draggable()
完成后),然后使用javascript设置他们的位置并将其设置为absolute
定位:
$('.d').each(function() {
var top = $(this).position().top + 'px';
var left = $(this).position().left + 'px';
$(this).css({top: top, left: left});
}).css({position: 'absolute'});
答案 1 :(得分:0)
我刚刚在你的jsFiddle演示中进行了一些编辑,它似乎正在工作
我的编辑:
<div id="dropwin"></div>
<div id="dragables">
<div class="outer"><div id="d1" class="d"></div></div>
<div class="outer"><div id="d2" class="d"></div></div>
<div class="outer"><div id="d3" class="d"></div></div>
<div class="outer"><div id="d4" class="d"></div></div>
</div>
<button id="b1">Remove d1</button>
<button id="b2">Remove d2</button>
<button id="b3">Remove d3</button>
<button id="b4">Remove d4</button>
在css中:
#dropwin { width: 300px; height: 300px; border: 1px solid #f00;}
#dragables { width: 300px; height: 70px; border: 1px solid #00f; }
.d { width: 50px; height: 50px; margin: 10px; display: inline-block; }
#d1 { background: #f00; position:absolute; }
#d2 { background: #ff0; position:absolute; }
#d3 { background: #f0f; position:absolute; }
#d4 { background: #0ff; position:absolute; }
.outer{ margin:1px 2px 0 0; float:left; width:60px;}