2009-03-19 10 views
1

ich folgende Javascript verwenden Drop (mit jQuery) ziehen zu handhaben und auf einem Skript fallen Ich schreibe:Wie Effekt zu vermeiden, mit Javascript Drag Flackern und

jsc.ui.dragging = false; 
jsc.ui.drag_element = {}; 
$(".drag-target").mousedown(function() { 
    jsc.ui.drag_element = $(this); 
    jsc.ui.dragging = true; 
}); 
$("html").mousemove(function(e) { 
    if(jsc.ui.dragging) { 
     jsc.ui.drag_element.css({"position": "absolute", "top": e.clientY - 1, "left": e.clientX - 1, "z-index": "100"}); // - 1s are due to IE not leaving go otherwise 
     $("#overlay").show(); // Overlay stops text beneath being selected. TODO Stop current elements text being selected. 
    } 
}); 
$(".drag-target").mouseup(function() { 
    if(jsc.ui.dragging) { 
     jsc.ui.dragging = false; 
     jsc.ui.drag_element.css("z-index", "98"); 
     $("#overlay").hide(); 
    } 
}); 

jedoch, wenn das Objekt gezogen wird, die Text im Inneren hat eine flackernde Auswahl, dh es wird ein- und ausgeschaltet, wenn das Element verschoben wird. Gibt es eine Möglichkeit, dies zu verhindern oder den Effekt zu verbergen?

Antwort

1

Gibt es einen Grund, jQuery UI Draggable nicht zu verwenden? Der Code würde so aussehen:

$(".drag-target").draggable(); 

Sie sollten zumindest prüfen, wie es zu bauen, kann es Ihnen helfen, Sie zu lösen Problem flackern.

+0

Ist jQuery UI modular? Wenn dies der Fall ist, liegt der Grund an mangelnder Kenntnis der jQuery UI. Allerdings verwende ich derzeit keine jQuery UI. Das Hinzufügen eines zusätzlichen Frameworks für einen Abschnitt scheint also übertrieben zu sein, und wenn ich das gesamte Framework verwenden muss, liegt der Grund in der Leistungsbeeinträchtigung. – Macha

+0

Völlig modular, können Sie wählen, was Sie hier benötigen: http://jqueryui.com/download. 27k für jquery.ui.core und ziehbar, nicht so groß meiner Meinung nach ... Probieren Sie es einfach aus und entscheiden Sie dann, ob Sie es behalten oder versuchen möchten, dieses flackernde Problem zu lösen;) – ybo

0

Ich denke, das Ausmaß des Effekts hängt von Ihrer Hardware und Ihrem Grafiktreiber ab. Um es vollständig zu vermeiden, können Sie einfach ein Rechteck zeichnen und dann das Fenster neu zeichnen, wenn die Maustaste losgelassen wird.