首页 > 解决方案 > 使用 jQuery 添加拖动事件

问题描述

我正在使用 jQuery 将 dragStart 事件添加到按钮。

这是我的html:

$('.btn-photo').on('dragstart', function (event) {});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="SinglePhoto" class="btn-section btn-photo" draggable="true"></div>

这适用于 Chrome,但不适用于 Safari。有谁知道为什么?

在 Safari 中,我可以拖动元素,但它不会显示为被拖动。在 Chrome 中,我可以拖动元素并看到它被拖动。

任何帮助将不胜感激!谢谢!

标签: javascriptjquerydrag-and-dropdrag

解决方案


我不确定这是否 100% 正确,但您可以尝试在事件的 dataTransfer 属性上使用 setDragImage 设置拖动图像:

$('.btn-photo').on('dragstart', function (event) {
    event.preventDefault();
    let img = $(this)[0];
    event.dataTransfer.setDragImage(img, 0, 0);
});

我还在event.preventDefault()那里扔了一个,以防万一它与此有关(我不在 Safari 上,所以无法测试)。

参考


推荐阅读