#javascript #html #drag-and-drop
#javascript #HTML #перетаскивание
Вопрос:
У меня есть ряд HTML-разделов, таких как:
<span class="dragable" id="Apple">
<span class="dragable" id="Banana">
<span class="dragable" id="Carrot">
…и т.д. Моя цель — сделать каждый диапазон перетаскиваемым на любой другой диапазон. При этом будет вызвана функция JavaScript, которая каким-то образом определит идентификатор как перетаскиваемых, так и удаляемых элементов, а затем запишет их в консоль (для целей отладки, конечно)
Сделать эти промежутки перетаскиваемыми просто, но я не уверен, как выйти из передачи идентификаторов в JavaScript. Я видел несколько руководств по передаче идентификаторов через события, но не каких-либо четких.
Любые советы будут с благодарностью.
Ответ №1:
Вы можете использовать jQuery UI. Он обеспечивает перетаскивание так, как вам это нужно:
$(document).ready(function() {
var $output = $('#output');
$(".draggable").draggable({revert: true}).droppable({
drop: function(event, ui) {
var $dragged = $(ui.draggable[0]);
$output.text($dragged.attr('id') " was dropped on " $(this).attr('id'));
}
});
});
.draggable {
width: 50px;
height: 50px;
display: inline-block;
border: 1px solid black;
background: grey;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="http://code.jquery.com/ui/1.9.2/jquery-ui.js"></script>
<span class="draggable" id="Apple"></span>
<span class="draggable" id="Banana"></span>
<span class="draggable" id="Carrot"></span>
<div id="output"></div>
Внимательно ознакомьтесь с документами draggable и droppable, чтобы увидеть полную функциональность.
Комментарии:
1. Отличный ответ! Помогло мне! Просто интересно, как это можно настроить так, чтобы кончик угла тоже учитывался? Это вообще регулируется?
2. Я думаю, что это невозможно, просто используя droppable. Вы могли бы проверить пересечения между двумя прямоугольниками. Проверьте пример событий из draggable, чтобы увидеть, как выполнить при перетаскивании перетаскиваемого объекта в любом месте. Но в любом случае, вы должны проверить вручную, если они перекрываются.
3. Да, я подумал об использовании верхнего и левого из отброшенного события, а затем вычислить все остальные позиции элементов и посмотреть, совпадают ли они, спасибо!