Перетаскивание без интерфейса JQuery
Я много искал, чтобы найти учебник для перетаскивания с помощью jQuery в одиночку (без интерфейса), но из-за популярности пользовательского интерфейса JQuery все функции перетаскивания основаны на пользовательском интерфейсе JQuery.
Может ли кто-нибудь дать мне подсказку, как сделать базовое перетаскивание JQuery автономным?
Ответы
Ответ 1
Я думаю, что хорошим стартовым местом могло бы стать отображение процесса, а затем решить, какие инструменты jQuery вам понадобятся для каждого действия пользователя.
поэтому пользовательский процесс может быть:
- Нажмите на свой контент div в области "draggable".
- Перетащите содержимое, которое будет содержать содержимое внутри этого div
- отпустите мышь, которая поместит содержимое в контейнер "droppable", который отрегулирует размер предыдущего содержимого, чтобы он соответствовал размеру droppable
который нуждается в следующих типах прослушивателей событий:
- MouseUp
- MouseDown
- одушевленные
По крайней мере. Другой вариант может состоять в том, чтобы проверить источник jQuery UI и посмотреть, как они это делают! Что скажет вам, что делать, но вы можете добавить к нему или обрезать там, где это необходимо.
Ответ 2
Есть несколько плагинов, которые вы можете использовать, посмотрите на
http://wayfarerweb.com/jquery/plugins/animadrag/
http://threedubmedia.com/code/event/drag/demo/
он все еще jquery, но нет UI
Ответ 3
http://thezillion.wordpress.com/2012/09/27/javascript-draggable-2-no-jquery
Смотрите. Это ядро JS и легко реализуется.
Ответ 4
Произошла одна и та же проблема, и 33,4 килобайта для мини-jqueryUI с только перетаскиваемым и droppable слишком велики для ограниченной функциональности, в которой я нуждался. Приведенный ниже подход - это не рабочий код - это просто простая структура для визуализации того, что должно произойти.
$('.draggable').on{
mousemove : function(){
var mouseposition = { // this also needs to account for onclick offset of pointer vis-a-vis element
x : pageX,
y : pageY
};
$(this).css({
top : mouseposition.y,
left : mouseposition.y
});
if( // this statement is kinda bogus, idea is to perform a collision detection via coordinate comparison
$('.draggable').offset().top < $(.droppable').offset().top
&&
$('.draggable').offset().left < $(.droppable').offset().left
) {
alert('the item has been dropped');
}
}
});
Ответ 5
Я нашел это очень полезным:
http://draggabilly.desandro.com/
Ответ 6
Я понимаю, что это старый пост, но я тоже был заинтересован в этом без JQuery UI. Я проверил ссылки выше, но я нашел, что это лучший вариант. Он только 8kb minified (UI sortable ~ 30, я прочитал), и не зависит от какой-либо гигантской библиотеки JQuery (хотя эти CAN иногда облегчают нашу жизнь).