JRu*_*lle 21 javascript jquery touch
我有以下jquery事件处理函数:
$('.target').on('dblclick', function() {
//respond to double click event
});
Run Code Online (Sandbox Code Playgroud)
我的问题是这个事件处理程序不适用于触控设备(iPhone,iPad ......).任何人都可以推荐一种可靠的替代品dblclick,可以在触摸设备上使用,并且仍可以在全尺寸设备上轻松双击使用吗?
JRu*_*lle 18
我最终构建了一个可在移动设备和桌面设备上运行的自定义双击功能:
var touchtime = 0;
$(".target").on("click", function() {
if (touchtime == 0) {
// set first click
touchtime = new Date().getTime();
} else {
// compare first click to this click and see if they occurred within double click threshold
if (((new Date().getTime()) - touchtime) < 800) {
// double click occurred
alert("double clicked");
touchtime = 0;
} else {
// not a double click so set as a new first click
touchtime = new Date().getTime();
}
}
});Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<div class="target">Double click me</div>Run Code Online (Sandbox Code Playgroud)
或者,这是JSfiddle演示.
将此添加到您的 index.html
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=0"/>
我发现移动缩放功能会抛弃 Jquery 的 dblclick。基本上它说你的视口不会有效地改变关闭缩放。这适用于我运行 Chrome 的 Nexus 5。
小智 7
我知道问题已经得到解答,但认为值得提出我一直使用的解决方案,欢呼:
var doubleClicked = false;
$('.target').on('click', function() {
if (doubleClicked) {
//do what you want to do on double click here
}
doubleClicked = true;
setTimeout(() => {
doubleClicked = false;
}, 300);
});
Run Code Online (Sandbox Code Playgroud)
您可以在元素上绑定多个事件侦听器,并将 jQuery 的tap事件用于触摸设备。
$( ".target" ).on({
dbclick: function() {
//do stuff
}, touch: function() {
//do the same stuff
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
28512 次 |
| 最近记录: |