为长按创建自定义事件,例如 'click'
Create a custom event like 'click' for longtap
我想制作一个可以像
一样使用的自定义事件
$('.entry').on('click', function().......
我需要它来检测移动设备的长按。我想这样称呼它:
$('.entry').on('longtap', function().......
我阅读了很多关于创建事件的内容,但大多数方法都是使用绑定和触发器。那么有没有办法做到这一点?
- 您可以使用其中一种手工解决方案,前提是here。
- 您可以将其附加为 third-party script。
- jQuery 手机有一个特殊的 taphold 活动。
如前所述here ,您不需要为长按创建自定义事件,您只需要 js 计时器和两个已经存在的事件,如 mouseup、mousedown:
var pressTimer;
$(".entry").mouseup(function(){
clearTimeout(pressTimer);
// Clear timeout
return false;
}).mousedown(function(){
// Set timeout
pressTimer = window.setTimeout(function() {
console.log("hi!")
},1000);
return false;
});
我给你做了个例子
这里是实现长按的方法:
var clickStart;
document.getElementById("cool_button").addEventListener('mousedown', function() {
console.log('mouse down');
this.clickStart = new Date().getTime();
});
document.getElementById("cool_button").addEventListener('mouseup', function() {
console.log('mouse up');
if ((new Date().getTime() - this.clickStart) >= 1000) {
console.log('this is a long tap');
}
});
<button id="cool_button">i'm a long tap button</button>
我想制作一个可以像
一样使用的自定义事件$('.entry').on('click', function().......
我需要它来检测移动设备的长按。我想这样称呼它:
$('.entry').on('longtap', function().......
我阅读了很多关于创建事件的内容,但大多数方法都是使用绑定和触发器。那么有没有办法做到这一点?
- 您可以使用其中一种手工解决方案,前提是here。
- 您可以将其附加为 third-party script。
- jQuery 手机有一个特殊的 taphold 活动。
如前所述here ,您不需要为长按创建自定义事件,您只需要 js 计时器和两个已经存在的事件,如 mouseup、mousedown:
var pressTimer;
$(".entry").mouseup(function(){
clearTimeout(pressTimer);
// Clear timeout
return false;
}).mousedown(function(){
// Set timeout
pressTimer = window.setTimeout(function() {
console.log("hi!")
},1000);
return false;
});
我给你做了个例子
这里是实现长按的方法:
var clickStart;
document.getElementById("cool_button").addEventListener('mousedown', function() {
console.log('mouse down');
this.clickStart = new Date().getTime();
});
document.getElementById("cool_button").addEventListener('mouseup', function() {
console.log('mouse up');
if ((new Date().getTime() - this.clickStart) >= 1000) {
console.log('this is a long tap');
}
});
<button id="cool_button">i'm a long tap button</button>