Einfache drag-and-drop-code
Im Kampf mit scheinbar eine einfache javascript-übung, verfassen einer Vanille-drag-and-drop. Ich glaube ich bin einen Fehler zu machen, mit meinem "addeventlisteners', hier ist der code:
var ele = document.getElementsByClassName ("target")[0];
var stateMouseDown = false;
//ele.onmousedown = eleMouseDown;
ele.addEventListener ("onmousedown" , eleMouseDown , false);
function eleMouseDown () {
stateMouseDown = true;
document.addEventListener ("onmousemove" , eleMouseMove , false);
}
function eleMouseMove (ev) {
do {
var pX = ev.pageX;
var pY = ev.pageY;
ele.style.left = pX + "px";
ele.style.top = pY + "px";
document.addEventListener ("onmouseup" , eleMouseUp , false);
} while (stateMouseDown === true);
}
function eleMouseUp () {
stateMouseDown = false;
document.removeEventListener ("onmousemove" , eleMouseMove , false);
document.removeEventListener ("onmouseup" , eleMouseUp , false);
}
InformationsquelleAutor Kayote | 2013-08-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ein jsfiddle mit ihm arbeiten: http://jsfiddle.net/fpb7j/1/
Gab es 2 wichtigsten Fragen, die erste ist die Verwendung von
onmousedown
,onmousemove
undonmouseup
. Ich glaube, diese sind nur zur Verwendung mit angeschlossenen Veranstaltungen:während
mousedown
,mousemove
undmouseup
sind für Ereignis-Listener:Das zweite Problem war die do-while-Schleife in der event-Funktion. Diese Funktion wird jedesmal aufgerufen, wenn die Maus bewegt wird, ein pixel, so dass die Schleife nicht notwendig ist:
Durch die Art und Weise, die ich zu treffen hatte das Ziel, die position absolute für Sie zu arbeiten.
Ich habe Sie verstanden, obwohl es wird nicht notwendig sein, wegen wie oft die
mousemove
Ereignis rufteleMouseMove()
Ich aktualisiert es ein wenig für meine Anforderung. Es kann hilfreich sein, für andere auch so jsfiddle.net/kjwLe9bq "Freigabe".
Dies ist von lange her, aber es ist erwähnenswert (wie der code in die Letzte Bemerkung zeigt), dass die Ereignis-listener für das Ereignis mouseup sollte Hinzugefügt werden, in der eleMouseDown Funktion, nicht in eleMouseMove; die letztere ist genannt viel, und Sie nicht wollen, um das hinzufügen eines mouseup-Hörer jedes mal, wenn der Benutzer bewegt die Maus.
Version zu vermeiden, springen Sie auf die erste Maus verschieben: jsfiddle.net/fpb7j/308
InformationsquelleAutor iRector
können Sie versuchen, diese Geige zu, http://jsfiddle.net/dennisbot/4AH5Z/
Stoppen Sie die draggable springt der Mauszeiger. Ich bekomme es.
InformationsquelleAutor dennisbot
Habe ich nur ein einfaches ziehen.
Es ist ein one-liner Verwendung, und es behandelt Dinge wie den offset der Maus zur linken oberen Ecke des Elements, onDrag/onStop Rückrufe und SVG-Elemente ziehen
Hier ist der code.
nehmen und zu nutzen:
Können Sie auch verwenden, onDrag und onStop-Rückrufe:
Check my repo hier für mehr details:
https://github.com/lingtalfi/simpledrag
InformationsquelleAutor ling