我想当draggable div拖入droppable div时,droppable div颜色获得另一种颜色,然后draggable div width / height变得更大并且完全适合droppable div.
这是一个JSFiddle
例如,当你将红色圆圈拖入大圆圈时,我想将大的div颜色变为红色,红色圆圈适合大的div.
对于这些问题,我写下了这些代码:
if ($(draggable).hasClass('dropped')) {
droppable.css({
background: 'red'
});
draggable.css({
width: '300px',
height: '300px'
});
}
但这些不起作用,我不知道如何使拖曳适合放置.
最佳答案 将draggable添加到droppable以使事情变得更容易.
我使用.data()来存储元素索引(记住在删除后将其放回的位置).
例:
$('#BigSix').droppable({
hoverClass: 'drop-hover',
drop: function (event, ui) {
var _this = $(this);
ui.draggable.addClass('dropped')
.data('droppedin', _this)
.data('SixIndex',ui.draggable.index());
_this.droppable('disable')
.append(ui.draggable)
}
});
拖出时把它放回去:
var prevElemIndex = $(this).data('SixIndex')-1;
if(prevElemIndex==-1) {
$("#container").prepend($(this))
}
else {
$(".Six:eq("+prevElemIndex+")").after($(this))
}
然后,您可以使用CSS按照自己的方式设置样式:
#BigSix div.Six {
//(!important isnt good but i dont see another way around it)
position: absolute !important;
top:0 !important;
left:0 !important;
width: 100%;
height: 100%;
border: none;
}
上面的CSS需要你有位置:相对于#BigSix和box-sizing:border-box on .Six