2009-03-19 9 views
1

J'utilise le javascript suivant (avec jQuery) pour gérer le glisser-déposer sur un script que je vous écris:Comment éviter l'effet vacillant javascript glisser-déposer

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(); 
    } 
}); 

Toutefois, lorsque l'objet est déplacé, les le texte à l'intérieur a une sélection clignotante, c'est-à-dire qu'il est activé et désactivé lorsque l'élément est déplacé. Est-il possible d'empêcher cela ou de cacher son effet?

Répondre

1

Y a-t-il une raison pour ne pas utiliser jQuery UI Draggable? Votre code ressemblerait que:

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

Vous devriez au moins vérifier comment il est construit, il peut vous aider à vous résoudre le problème vacillante.

+0

L'interface utilisateur jQuery est-elle modulaire? Si c'est le cas, la raison en est le manque de connaissance de l'interface utilisateur jQuery. Cependant, je n'utilise pas actuellement l'interface utilisateur de jQuery, donc l'ajout d'une structure supplémentaire pour une section semble excessif et si j'ai besoin d'utiliser tout le framework, la raison en est les problèmes de performances. – Macha

+0

Entièrement modulaire, vous pouvez sélectionner ce dont vous avez besoin ici: http://jqueryui.com/download. 27k pour jquery.ui.core et draggable, pas si grand à mon avis ... Essayez-le et décidez si vous voulez le garder ou essayer de résoudre ce problème de scintillement;) – ybo

0

Je pense que l'ampleur de l'effet dépend de votre pilote matériel et vidéo. Pour l'éviter complètement, vous pouvez simplement dessiner un rectangle et redessiner la fenêtre lorsque le bouton de la souris est relâché.