当前位置: 首页 > 知识库问答 >
问题:

html5 文件拖放事件混淆

阴波峻
2023-03-14

我想将事件附加到元素以处理文件拖放事件,但似乎此事件也附加到所有子元素。例如

$('#dragtarget').on('dragenter', function() {
    console.log('dragenter');
});

...如果我将文件拖到属于#dragTarget元素的任何元素上,控制台将输出dragenter。因此,如果我将此事件附加到文档窗口,则当悬停在页面上的任何元素上时,事件将触发。

对于<code>dragleave

为什么会这样?有没有办法把这个事件只附加到指定的元素上?如果没有,有没有办法将事件从所有子元素中分离出来?

这里有一个摆弄的例子:http://jsfiddle.net/UnsungHero97/ePLV6/7/

>

  • 请注意,当您将文件拖到框上时,边框如何变为实心,但当悬停在文本上时,边框又变为虚线

    我希望在框上拖动文件时,无论将鼠标悬停在框中的文本上,边框都更改为实心

    这是小提琴中的代码,以防万一:

    HTML

    <div id="dragtarget">
        <span>File over/out here</span>
        <br/><br/>
        <span>more text here</span>
    </div>
    

    JS

    // I expect only the #dragtarget element to fire the 'dragenter' and 'dragleave' events,
    // not the child elements
    $('#dragtarget').on('dragenter', function() {
    
        $(this).css({borderStyle: 'solid'});
    
        event.stopPropagation();
        event.preventDefault();
        return false;
    
    }).on('dragleave', function() {
    
        $(this).css({borderStyle: 'dashed'});
    
        event.stopPropagation();
        event.preventDefault();
        return false;
    });
    
  • 共有1个答案

    丁鸿信
    2023-03-14

    没有。你可能正在看到一个事件的泡沫。检查<code>事件。target以查看您正在处理的事件的起源。

     类似资料:
    • 问题内容: 我还没有看到执行此操作的示例。API规范中不允许这样做吗? 我正在寻找一种简单的拖放解决方案,用于上传整个文件夹的照片树。 问题答案: 多亏了Chrome> = 21,现在才有可能。

    • 本文向大家介绍对于HTML5拖放事件,dragLeave事件在放置之前触发,包括了对于HTML5拖放事件,dragLeave事件在放置之前触发的使用技巧和注意事项,需要的朋友参考一下 要解决拖放事件的这一问题,有时在拖动之前将dragLeave触发: 在下拉菜单中,您可以设置以下内容:

    • 我有一个应用程序,我正在做html5拖放分类,所以用户可以选择分类并移动到他想要的地方。 一切都很好,但有时类别列表很大,如果用户需要将其向下移动,他们希望使用鼠标滚轮滚动,但问题是拖动启动后不会触发此事件。 注:是的,如果光标移到底部,浏览器将滚动,但在我的应用程序中,用户体验很重要,因为有时他们会对50个类别进行排序,这需要很多时间 下面是示例代码,若您开始拖动div并在鼠标上滚动滚轮,那个么

    • 拖放(Drag’n’Drop)是一个很赞的界面解决方案。取某件东西并将其拖放是执行许多东西的一种简单明了的方式,从复制和移动文档(如在文件管理器中)到订购(将物品放入购物车)。 在现代 HTML 标准中有一个 关于拖放的部分,其中包含了例如 dragstart 和 dragend 等特殊事件。 这些事件使我们能够支持特殊类型的拖放,例如处理从 OS 文件管理器中拖动文件,并将其拖放到浏览器窗口中。

    • #div1, #div2 {float:left; width:100px; height:35px; margin:10px;padding:10px;border:1px solid #aaaaaa;} function allowDrop(ev) { ev.preventDefault(); } function drag(ev) { ev.dataTransfer.setData("Tex

    • 问题内容: 我正在尝试向我的SwiftUI Mac应用程序添加“拖放”手势/功能。 我想将文件从系统/桌面拖放到应用程序中。我发现它可以在常规Swift中使用。我现在正尝试在SwiftUI中执行此操作。 我在SwiftUI for Views中找到了一个函数。但是,看起来这仅适用于应用程序内部的内部手势。我想从外面拖文件。 在Swift中,您需要为拖动的类型注册NSView。 我想创建一个NSVi