用于触摸设备的 Javascript 拖放 [已关闭]
2022-08-30 04:49:33
我正在寻找一个适用于触摸设备的拖放插件。
我想要与jQuery UI插件类似的功能,它允许“可丢弃”元素。
jqtouch插件支持拖动,但不支持丢弃。
这是仅支持iPhone / iPad的拖放。
任何人都可以为我指出在android / ios上运行的拖放插件的方向吗?
...或者可以更新jqtouch插件以实现可丢弃性,它已经在Andriod和IOS上运行。
谢谢!
我正在寻找一个适用于触摸设备的拖放插件。
我想要与jQuery UI插件类似的功能,它允许“可丢弃”元素。
jqtouch插件支持拖动,但不支持丢弃。
这是仅支持iPhone / iPad的拖放。
任何人都可以为我指出在android / ios上运行的拖放插件的方向吗?
...或者可以更新jqtouch插件以实现可丢弃性,它已经在Andriod和IOS上运行。
谢谢!
您可以使用Jquery UI进行拖放,并带有一个额外的库,该库将鼠标事件转换为触摸,这是您需要的,我建议的库 https://github.com/furf/jquery-ui-touch-punch,因此,您从Jquery UI拖放应该在触摸设计上工作
或者你可以使用我正在使用的这段代码,它还将鼠标事件转换为触摸,它就像魔术一样工作。
function touchHandler(event) {
var touch = event.changedTouches[0];
var simulatedEvent = document.createEvent("MouseEvent");
simulatedEvent.initMouseEvent({
touchstart: "mousedown",
touchmove: "mousemove",
touchend: "mouseup"
}[event.type], true, true, window, 1,
touch.screenX, touch.screenY,
touch.clientX, touch.clientY, false,
false, false, false, 0, null);
touch.target.dispatchEvent(simulatedEvent);
event.preventDefault();
}
function init() {
document.addEventListener("touchstart", touchHandler, true);
document.addEventListener("touchmove", touchHandler, true);
document.addEventListener("touchend", touchHandler, true);
document.addEventListener("touchcancel", touchHandler, true);
}
在您的 document.ready 中,只需调用 init() 函数
从这里找到的代码
对于任何希望使用它并保留“点击”功能的人(正如John Landheer在他的评论中提到的),您只需进行一些修改即可完成:
添加几个全局变量:
var clickms = 100;
var lastTouchDown = -1;
然后将 switch 语句从原始语句修改为:
var d = new Date();
switch(event.type)
{
case "touchstart": type = "mousedown"; lastTouchDown = d.getTime(); break;
case "touchmove": type="mousemove"; lastTouchDown = -1; break;
case "touchend": if(lastTouchDown > -1 && (d.getTime() - lastTouchDown) < clickms){lastTouchDown = -1; type="click"; break;} type="mouseup"; break;
default: return;
}
您可能希望根据自己的喜好调整“点击次数”。基本上,它只是观察“触摸开始”,然后快速观察“触摸端”以模拟点击。