我在拖动其他div元素中的div时遇到问题。
HTML看起来像这样:
<div id="grid">
<div id="el1" style="width:300px"></div>
<div id="el2" style="width:100px"></div>
<div id="el3" style="width:100px"></div>
<div id="el4" style="width:100px"></div>
</div>
所有元素都是可拖动的,并且具有css样式float:left;position:relative;
。
当我将el1
拖到el3
的位置时,它会起作用,但当然它会与元素el3
重叠。
draggin jquery draggable
工作正常,但我想在此位置的HTML代码中插入ID为el1
的div。
它看起来像这样:
<div id...>
<div id="el2...
<div id="el3...
<div id="el1...
<div id="el4...
</div>
我现在的问题是,这是一个网格。 el1
的宽度为'300',宽度为'100'。将el1
拖到el3
的地方应该将el2
,el3
和el4
交换到el1
和el1
的地方el2, el3, el4
。
要获得此行为,我认为我需要在div
之后移动el4
HTML代码。但是如何确定哪个元素最近?
-------更新-------
我试图使用sortable ...请参阅此处http://jsfiddle.net/vwK5e/2/ 但是如果你把红色方框放在3号位上,红色方框将在第二行(正确),但是数字4应该在第3位旁边,因为空白区域。
TIA frgtv10
答案 0 :(得分:3)
答案 1 :(得分:0)
我的解决方案如下:
而不是jQuerys draggable
我正在使用sortable
(链接到sortable)。
除此之外,我现在得到了名为masonry
的jQuery插件的帮助(链接到masonry)
示例:
// Masonry
$('#container').masonry({
itemSelector: '.element',
isResizable: true,
columnWidth: 100
})
// Sortable
$('#container').sortable({
items: '.element',
forcePlaceholderSize: true,
placeholder: 'card-sortable-placeholder element',
tolerance: 'pointer',
handle: '.handle',
cursor: 'move',
cancel: '.notdrag',
start: function(event, ui) {
ui.item.addClass('dragging').removeClass('element');
ui.item.parent().masonry('reload')
},
change: function(event, ui) {
ui.item.parent().masonry('reload');
},
stop: function(event, ui) {
ui.item.removeClass('dragging').addClass('element');
ui.item.parent().masonry('reload');
}
});