首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jquery ondrop事件与内联ondrop事件不相等。

Jquery ondrop事件与内联ondrop事件不相等。
EN

Stack Overflow用户
提问于 2018-05-15 14:33:19
回答 1查看 104关注 0票数 1

这是我的工作代码:

代码语言:javascript
复制
function dodrop(event)  {
  var dt = event.dataTransfer;
  var files = dt.files;
  var count = files.length;
  output("File Count: " + count + "\n");
  for (var i = 0; i < files.length; i++) {
	  output(" File " + i + ":\n(" + (typeof files[i]) + ") : <" + files[i] + " > " + files[i].name + " " + files[i].size + "\n");
  }
}

function output(text) {
  $('.drag-and-drop').text($('.drag-and-drop').text() + text);
}
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <div id="output" class="drag-and-drop" style="min-height: 200px; white-space: pre; border: 1px solid black;"
			ondragenter="document.getElementById('output').textContent = ''; event.stopPropagation(); event.preventDefault();"
			ondragover="event.stopPropagation(); event.preventDefault();"
			ondrop="event.stopPropagation(); event.preventDefault(); dodrop(event);">
					 DROP FILES HERE FROM FINDER OR EXPLORER
		</div>

这段代码显示了被删除文件的相关信息,并且运行良好。

但是,如果我从div标记中删除内联事件并使用Jquery,它的工作方式就不一样了。我试图将内联事件转换为如下所示的jQuery事件:

代码语言:javascript
复制
    $('.drag-and-drop').on('dragenter', function(event){
    	event.stopPropagation();
    	event.preventDefault();
    });
    
    $('.drag-and-drop').on('dragover', function(event){
    	event.stopPropagation();
    	event.preventDefault();
    });
    
    $('.drag-and-drop').on('drop', function(event){
    	event.stopPropagation(); 
    	event.preventDefault();
    	console.log(event);
    	dodrop(event);
    });

function dodrop(event)  {
      var dt = event.dataTransfer;
      var files = dt.files;
      var count = files.length;
      output("File Count: " + count + "\n");
      for (var i = 0; i < files.length; i++) {
    	  output(" File " + i + ":\n(" + (typeof files[i]) + ") : <" + files[i] + " > " + files[i].name + " " + files[i].size + "\n");
    	}
    }

    function output(text) {
      $('.drag-and-drop').text($('.drag-and-drop').text() + text);
    }
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="output" class="drag-and-drop" style="min-height: 200px; white-space: pre; border: 1px solid black;">
  DROP FILES HERE FROM FINDER OR EXPLORER
</div>

但是在jQuery拖放事件中,返回的事件与内联ondrop返回的事件不相等。我想我需要编辑我的jQuery代码,但我不知道我做错了什么.

提前感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-15 20:47:08

jQuery事件对象与DOM事件对象略有不同。您可以通过调用originalEvent属性来访问原始事件对象。

代码语言:javascript
复制
dt = event.originalEvent.dataTransfer
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50352896

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档