我有一个名为" clicker"我想为这个元素处理3个事件:点击,双击并按下&按住或长按。我已经能够在这里和那里聚集一些有用的代码,这些代码在触摸设备上几乎可以正常工作,但似乎单击并按下&保持事件一个接一个地被触发,因为当我按下DIV然后按住我得到的结果首先保留为单击然后被触发按下事件&保持。我在jQuery 1.12.2旁边添加了jQuery.mobile,以便工作但不如我预期的那样好。
<style>
#clicker {
width: 150px;
height: 150px;
margin: 10px;
background: green;
color: #fff;
font-weight:bolder;
font-size: 21px;
}
</styles>
jQ代码在这里:
$(document).ready(function($){
function single_tap(){
$("#clicker").html("single tap")
}
//
function double_tap(){
$("#clicker").html("double tap")
}
//
tapped=false
$("#clicker").on("touchstart",function(e){
if(!tapped){
tapped=setTimeout(function(){
single_tap()
tapped=null
},300); //wait 300ms
}
else {
clearTimeout(tapped);
tapped=null
double_tap()
}
e.preventDefault()
});
});
//----
//process press and hold down on #clicker:
$(document).ready(function($){
$("#clicker").on("taphold",function(){
clearTimeout(tapped);
tapped=null
$("#clicker").html("pressed and hold me");
});
e.preventDefault()
});
我尝试了一些组合,但没有任何帮助。有什么建议吗?谢谢。