我使用的是YUI滑块,它可以操作鼠标移动事件。我想让它对touchmove
事件(iPhone和Android)做出响应。当touchmove
事件发生时,如何产生鼠标移动事件?我希望只需在顶部添加一些脚本,即可将touchmove
事件映射到鼠标移动事件,而无需使用滑块进行任何更改。
发布于 2014-09-26 13:14:19
我最终找到了一种方法,使用Mickey的解决方案,而不是他的init函数。在这里使用init函数。
function init() {
document.getElementById('filter_div').addEventListener("touchstart", touchHandler, true);
document.getElementById('filter_div').addEventListener("touchmove", touchHandler, true);
document.getElementById('filter_div').addEventListener("touchend", touchHandler, true);
document.getElementById('filter_div').addEventListener("touchcancel", touchHandler, true);
}
如果你看到'filter_div
‘是图表区域,在那里我们有图表范围过滤器,并且只有在那个区域我们才想重写我们的触摸控件!
谢谢你米奇。这是一个很好的解决方案。
发布于 2012-12-14 02:12:35
按照@Mickey Shine的回答,Touch Punch提供了触摸事件到点击事件的映射。它是为将此支持放入jQuery UI而构建的,但the code提供了丰富的信息。
发布于 2016-03-21 21:58:24
对于回到这里的未来用户,可能会使用以下代码:
var eventMap = {};
(function(){
var eventReplacement = {
"mousedown": ["touchstart mousedown", "mousedown"],
"mouseup": ["touchend mouseup", "mouseup"],
"click": ["touchstart click", "click"],
"mousemove": ["touchmove mousemove", "mousemove"]
};
for (i in eventReplacement) {
if (typeof window["on" + eventReplacement[i][0]] == "object") {
eventMap[i] = eventReplacement[i][0];
}
else {
eventMap[i] = eventReplacement[i][1];
};
};
})();
然后在事件中使用如下所示:
$(".yourDiv").on(eventMap.mouseup, function(event) {
//your code
}
https://stackoverflow.com/questions/1517924
复制相似问题