Javascript 检测触摸与点击事件的更好方法

Javascript 检测触摸与点击事件的更好方法,javascript,jquery,Javascript,Jquery,因此,我已经对代码进行了多次迭代,但我认为我终于找到了使用通用jQuery插件检测点击与点击事件的最终方法。该插件需要一个隐藏的输入字段来存储“touchMove”标志。有人知道(查看我的代码)在全局变量中存储标志的方法吗?我试图声明一个全局touchMove变量,但不幸的是,javascript函数将全局变量复制到范围内的本地副本 不管怎样,我得到的是: $(文档).ready(函数(){ $(“#触摸我”).touch(函数(){ log(“我已经被激活了!”); }); }); $.fn

因此,我已经对代码进行了多次迭代,但我认为我终于找到了使用通用jQuery插件检测点击与点击事件的最终方法。该插件需要一个隐藏的输入字段来存储“touchMove”标志。有人知道(查看我的代码)在全局变量中存储标志的方法吗?我试图声明一个全局
touchMove
变量,但不幸的是,javascript函数将全局变量复制到范围内的本地副本

不管怎样,我得到的是:

$(文档).ready(函数(){
$(“#触摸我”).touch(函数(){
log(“我已经被激活了!”);
});
});
$.fn.touch=函数(回调){
var-touch=false;
$(此)。在(“单击”)上,函数(e){
如果(!触摸){
log(“我点击!”);
让callbackReal=callback.bind(this);
callbackReal(this,e);
}否则{
触摸=真实;
}
触摸=假;
});
$(this).on(“touchend”,函数(e){
$(this.blur();
if(e.touchs的类型!=未定义的类型){
e、 预防默认值();
触摸=真实;
if($(“#touchMove”).val()=='moved'){
log(“你动了手指,所以我退出了!”);
$(“#touchMove”).val(“”);
返回false;
}否则{
日志(“我触摸!”);
让callbackReal=callback.bind(this);
callbackReal(this,e);
}
}
});
$(此).on(“触摸移动”,函数(e){
$(“#touchMove”).val('moved');
});
}

触摸或点击我

以下是@Shikkediel编辑的最终代码:

$.fn.touch=函数(回调){
$.touch={
行动:“,
动议:错,
事件:错误
}
返回此。在(“单击”时,函数(e){
如果(!$.touch.event){
$.touch.action=“单击”;
让callbackReal=callback.bind(this);
callbackReal(this,e);
}
$.touch.event=false;
})
.on(“触控端”,功能(e){
$(this.blur();
$.touch.event=true;
如果($.touch.move){
$.touch.move=false;
返回;
}否则{
$.touch.action=“touch”;
让callbackReal=callback.bind(this);
callbackReal(this,e);
}
})
.on(“触摸移动”,函数(){
$.touch.move=true;
});
}
$(“#单击我”).touch(函数(){
log(“操作:+$.touch.Action”);
});


点击或触摸我
您可以随时使用
窗口设置任何全局变量。例如,touchMove=true
。确实可以,但全局声明单独的变量有点混乱。由于jQuery本身已经是一个,您还可以执行
$.touchMove
,避免窗口对象进一步混乱。谢谢,@Shikkediel。我不知道你可以像那样访问jQuery属性!多么简单,却又非常有用。真不敢相信我竟然不知道。我过去做过的所有变通方法。。。我在答复中提出了你的建议。