Что я хотел бы сделать, так это установить цвет границы в синий для элемента .droparea
, который содержит элемент .item
.Выделение только droppable, который зависает или к которому помечен элемент.
Также есть эффект зависания для .droparea
, который меняет цвет границы на синий.
Так что, если я двигаю .item
элемента к другому .droparea
он должен автоматически изменить цвет границы для текущей .droparea
до синего и изменить границы ранее использовали .droparea
по умолчанию цвет (черный).
$(document).ready(function() {
$(".item").draggable({
scroll: false,
revert: 'invalid',
stack: false,
create: function() {
$(this).data('position', $(this).position())
},
cursor: "pointer",
start: function() {
$(this).stop(true, true)
},
drag: function(event, ui) {
$(".droparea").removeClass("highlight");
}
});
$(".droparea").droppable({
accept: ".item",
drop: function(event, ui) {
$(this).addClass("highlight").find("p");
snapToMiddle(ui.draggable, $(this));
}
});
});
function snapToMiddle(dragger, target) {
var topMove = target.position().top - dragger.data('position').top + (target.outerHeight(true) - dragger.outerHeight(true))/2;
var leftMove = target.position().left - dragger.data('position').left + (target.outerWidth(true) - dragger.outerWidth(true))/2;
dragger.animate({
top: topMove,
left: leftMove
}, {
duration: 200,
easing: 'linear'
});
}
.item {
position: relative;
margin: 0 auto;
width: 100px;
height: 100px;
border: 1px solid red;
}
.droparea {
width: 150px;
height: 150px;
float: left;
margin: 2px;
border: 1px solid #000;
outline: 1px solid transparent
}
.highlight {
border: 1px solid blue
}
.droparea:hover {
border: 1px solid blue
}
<script src="http://code.jquery.com/jquery-1.11.1.min.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.4/jquery-ui.js"></script>
<div class="droparea">
<div class="item"></div>
</div>
<div class="droparea"></div>
<div class="droparea"></div>