代码之家  ›  专栏  ›  技术社区  ›  Brad Robinson

拖动图像时在底层对象上jquery鼠标事件

  •  0
  • Brad Robinson  · 技术社区  · 14 年前

    我尝试使用jquery在面板之间实现简单的图像拖放。拖动时,我将创建一个缩略图,并将其放置在鼠标下。这部分都可以工作,但是由于鼠标现在总是有缩略图在下面,所以在底层的放置目标面板上不会显示mouseenter/leave。我希望在拖动过程中使用这些事件突出显示放置目标面板。

    有没有一个我可以使缩略图不模糊这些事件?我还能做些什么来让它工作?

    (在这种情况下,我不想使用jqueryui,因为我不需要它来做任何其他事情,而且它似乎太致命了。另外,这对我来说是一个学习练习,所以我想了解一下选项:)。

    2 回复  |  直到 14 年前
        1
  •  1
  •   lincolnk    14 年前

    一个选项是跟踪鼠标在文档中的移动,并检查光标是否在页面中与您相关的任何元素的边界内。您将无法获取单个元素的鼠标事件,但您可以手动跟踪鼠标经过的最后一个元素,并确定如果使用释放鼠标按钮(在文档上鼠标向上),将如何处理它。

    粗略地喜欢

    var last_element = null;
    
    function document_mousemove (e) {
    
        last_element = null;
    
        for each el in array_of_important_elements {
    
            if ( mouse position in el bounds ) {
                last_element = el;
            }
        }
    }
    
    function document_mouseup (e) {
        if (last_element != null) {
            // do your drop logic here
        }
    }
    

    这假设您不会有同时考虑删除的重叠元素。如果是这样的话,你会想追踪它们,并决定如何继续下降。

        2
  •  1
  •   Alex    14 年前

    你能不能把缩略图的偏移量放在鼠标上,而不是放在鼠标下面?这样就不会掩盖你的鼠标事件。或者您可以获取该元素,并在它进入另一个元素边界时进行检查?