如何通过javascript拖放来避免闪烁效果

时间:2009-03-19 19:24:21

标签: javascript jquery drag-and-drop

我使用以下javascript(使用jQuery)来处理我正在编写的脚本的拖放:

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

然而,当拖动对象时,其中的文本具有闪烁选择,即在元素移动时正在选择打开和关闭它。有什么方法可以防止这种情况,或者隐藏它的效果吗?

2 个答案:

答案 0 :(得分:1)

是否有理由不使用jQuery UI Draggable?你的代码看起来像那样:

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

你至少应该检查它的构建方式,它可以帮助你解决闪烁问题。

答案 1 :(得分:0)

我认为效果的程度取决于您的硬件和视频驱动程序。要完全避免它,您只需绘制一个矩形,然后在释放鼠标按钮时重绘窗口。