jQuery和Zepto中都没有包含长按事件,有某些需求,简单的实现了一下:
$.fn.longPress = function(fn1,fn2) {
var timeout ;
var $this = this;
for(var i = 0;i<$this.length;i++){
$this[i].addEventListener('touchstart', function(event) {
timeout = setTimeout(fn1, 800); //长按时间超过800ms,则执行传入的方法
}, false);
$this[i].addEventListener('touchend', function(event) {
// setTimeout(fn2, 100);
console.log(typeof fn2);
if (true) {
fn2()
}
clearTimeout(timeout); //长按时间少于800ms,不会执行传入的方法
}, false);
}
}
然后调用
//$('#ele').longPress(fn1,fn2)
$('#ele').longPress(function(){
//开始执行...
console.log("touchstart");
},function () {
//停止...
console.log("touchend");
});