Я следую за this guide для jQuery перетаскиваемого элемента.jQuery UI: draggable on dragenter
Единственное, что я пропустил, - это dragenter
и dragleave
событиях, чтобы поиграть с CSS временных элементов. Он предоставляет только свойство hoverClass
для элементов droppable, когда перемещаемые элементы перемещаются на них. Как насчет того, нужно ли нам менять CSS других элементов?
Текущий код выглядеть следующим образом:
$(".part").draggable({
start: startDrag,
stop: stopDrag,
revert: true
});
$(".parts-action").droppable({
accept: '.part',
hoverClass: 'hovered',
drop: handleDrop
});
В дополнение к этому, мне нужно что-то вроде:
$(".wrapper").on('dragenter', function (e) {
$(this).next(".parts-action").show();
});
$(".wrapper").on('dragleave', function (e) {
$(this).next(".parts-action").hide();
});
но не работает при использовании draggable()
рядом.
Я также попытался:
$(".part").draggable({
drag: handleDrag
})
function handleDrag(e, ui){
/* how to know if active draggable is on some element other than droppable? */
}
что очень сбивает с толку, потому что его привязали к перетаскиваемым и Droppable!
Вам нужно будет определить 2 области сбрасываемых областей, первая из которых вызовет скрытие шоу второго, а также контейнер, чтобы выяснить, когда вы снова оставите все, чтобы скрыть вторую каплю. Попробуйте следующее: http://jsfiddle.net/KsNN7/3/ – jammykam
Немного покончено: http://jsfiddle.net/KsNN7/6/ – jammykam
+1, Спасибо. Но поведение в моем случае очень противоречиво, когда я открываю Chrome. Не могли бы вы взглянуть на мою скрипку: http://jsfiddle.net/jvGuQ/. К тому моменту, когда мышь перемещается по div «Drag child», она исчезает. Журналы консоли показывают, что handleDrop запускается, когда элемент находится в div info. Кроме того, скрытые поля не отображаются на корневых узлах (A, B, C, D), если перетаскиваемый движок не перемещается влево от элемента. Не могли бы вы взглянуть, где я делаю ошибку. – Annie