Хотя в вопросе указывается родной JavaScript, я собираюсь ответить, учитывая, что @Moe Sweet прокомментировал, что jQuery был включен .
Перетаскивание - это определенная цепочка событий. Это не неприлично сложно, но это может быть сложно.
Проще говоря, перетаскивание это следующие шаги / события:
- Мышь нажата, перетаскивание включено
- Мышь перемещается, перетаскивание продолжается
- Мышь отпущена, перетаскивание отключено
Простым решением является использование этих событий: mousedown
, mousemove
и mouseup
$(anElement).mousedown(foodown);
function foodown(){
$(window).mousemove(foomove).mouseup(fooup);
//stuff
}
function foomove(){
//stuff
}
function fooup(){
//stuff
$(window).unbind('mousemove', foomove).unbind('mouseup', fooup);
}
Следует отметить, что события, следующие за mousedown
, должны быть привязаны к window
, чтобы они были перехвачены, если мышь покинула исходный элемент, удерживая ее нажатой.
Часть кода "вещи" - это то, где вам нужно проверить координаты экрана элемента и координаты экрана мыши и соответствующим образом перемещать объекты. Движение действительно необходимо только во время события mousemove
, поскольку мышь не перемещалась для события mouseup
или mousedown
.
Есть похожий вопрос, где я разместил свой код для плагина jQuery.dragondrop .