永发信息网

如何绑定'touchstart'和'点击'事件,但不能两者反应

答案:2  悬赏:20  手机版
解决时间 2021-01-04 06:50
如何绑定'touchstart'和'点击'事件,但不能两者反应
最佳答案
1. 结合两者,但做一个标志,这样的函数只触发一次,每100毫秒左右。var flag = false;
$thing.bind('touchstart click', function(){
if (!flag) {
flag = true;
setTimeout(function(){ flag = false; }, 100);
// do something
}

return false
});

2. 你可以尝试这样的:var clickEventType=((document.ontouchstart!==null)?'click':'touchstart');
$("#mylink").bind(clickEventType, myClickHandler);

3. 这是我“创造”,并拿出GhostClick和FastClick修复。试试在你自己的,并知道它的工作适合你。$(document).on('touchstart click', '.myBtn' function(event){
event.stopPropagation();
event.preventDefault();
if(event.handled !== true) {

// Do your magic

event.handled = true;
} else {
return false;
}
});

4. 通常这个工程,以及:$('#buttonId').on('touchstart click', function(e){
e.stopPropagation(); e.preventDefault();
//your code here

});

5. 余由以下方法。 易Peasy ...$(this).bind('touchstart click', function(){
e.preventDefault();
//do your stuff here
});

6. 检查快速按键和点击CHOST从谷歌

7. 一般来说,你不想混了默认的触摸和非触摸(点击)API.a旦你进入触摸的世界更容易只与触摸相关的功能处理。下面是伪代码,会做你想要它。 如果你在的TouchMove事件连接和跟踪的位置,您可以添加在doTouchLogic功能更多的项目来检测手势和诸如此类的东西。var touchStartTime;
var touchStartLocation;
var touchEndTime;
var touchEndLocation;

$thing.bind('touchstart'), funcion() {
var d = new Date();
touchStartTime = d.getTime();
touchStartLocation = mouse.location(x,y);
});

$thing.bind('touchend'), funcion() {
var d = new Date();
touchEndTime= d.getTime();
touchEndLocation= mouse.location(x,y);
doTouchLogic();
});

function doTouchLogic() {
var distance = touchEndLocation - touchStartLocation;
var duration = touchEndTime - touchStartTime;

if (duration <= 100ms && distance <= 10px) {
// Person tapped their finger (do click/tap stuff here)
}
if (duration > 100ms && distance <= 10px) {
// Person pressed their finger (not a quick tap)
}
if (duration <= 100ms && distance > 10px) {
// Person flicked their finger
}
if (duration > 100ms && distance > 10px) {
// Person dragged their finger
}
}

8. 另一个更好的维护。然而,该技术也将做event.stopPropagation()。点击是没有抓到任何其他的点击为100ms。var clickObject = {
flag: false,
isAlreadyClicked: function () {
var wasClicked = clickObject.flag;
clickObject.flag = true;
setTimeout(function () { clickObject.flag = false; }, 100);
return wasClicked;
}
};

$("#myButton").bind("click touchstart", function (event) {
if (!clickObject.isAlreadyClicked()) {
...
}
}

9. 我写了一个jQuery插件,它提供了一个“touchclick”事件,你可以听。这需要避免被解雇两次都支持双方的点击和touchstart事件时,事件的照顾。

10. 只为目的,这里就是我的最快/最敏感的点击桌面/ TAP解决方案,我能想到的做: 我换成jQuery的on功能与修改一个,只要浏览器支持触摸事件,全部换成我的点击事件与touchstart。$.fn.extend({ _on: (function(){ return $.fn.on; })() });
$.fn.extend({
on: (function(){
var isTouchSupported = 'ontouchstart' in window || window.DocumentTouch && document instanceof DocumentTouch;
return function( types, selector, data, fn, one ) {
if (typeof types == 'string' && isTouchSupported && !(types.match(/touch/gi))) types = types.replace(/click/gi, 'touchstart');
return this._on( types, selector, data, fn);
};
}()),
});

用法比将有确切像以前一样:$('#my-button').on('click', function(){ });

但touchstart时可用,点击时不会。需要的任何种类的任何延误:D

11. 我也工作在Android / iPad的Web应用程序,它看来,如果“会连续”,就足以“(无需touchstart)。 。通过禁用touchstart,单击();从jQuery的。它的实际工作还没有被touchstart超载。 最后,您可以BINB生活。(“touchstart”功能(E){e.stopPropagation();});要求touchstart事件停止传播,客厅点击()来获取触发。 它的工作

12. 有很多事情试图解决这一问题时要考虑的。大多数解决方案要么打破滚动或不办理鬼单击事件正常。 对于一个完整的解决方案,请参阅 注意:你不能处理好鬼click事件每个基础。延迟的点击是通过屏幕位置发射,所以如果你的触摸事件修改页面的方式,单击事件将被发送到该页面的新版本。

13. 相反,你一个计数器:var count = 0;
$thing.bind('touchstart click', function(){
count++;
if (count %2 == 0) { //count 2% gives the remaining counts when devided by 2
// do something
}

return false
});

14. 它可以有效地分配给该事件'touchstart mousedown'或'touchend mouseup'以避免不希望的副作用click。

15. 考虑一个事实,即点击将始终遵循一个触摸事件的优势,这里是我做的,无需或全局标志摆脱“鬼点击”的。$('#buttonId').on('touchstart click', function(event){
if ($(this).data("already")) {
$(this).data("already", false);
return false;
} else if (event.type == "touchstart") {
$(this).data("already", true);
}
//your code here
});

基本上,每当ontouchstart上一个标志一组并随后删除(忽略)事件触发,当点击
全部回答
你的是手机web么?我在做web时,一般都会用一些基础库帮助开发。如果pc上用jquery,手机上用zepto,上面有一些关于事件处理的。 不过对你你提到的touchstart事件,我目前了解的不多。暂时无法给到答案你,不好意思哈。 不过顺便提一下,有些事件并不能直接调用这样的方法来触发,而是必须要用户操作触发(安全性原因)。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
如何写一封推荐信
The lazy waiter to his boss that he had th
2017年驾考收费新规定 2017年驾考新规每小时
单选题恩格斯说:“这是一次人类从来没有经历
驾驶证是科三就把纸质档案里相片贴上驾驶证上
创维电视黑屏修多少钱
什么是个人经营性贷款?
随心远行的意思
阅读理解Parentswhosechildrenshowaspeciali
学金融的本科毕业去银行好还是证券公司好
单选题藏文史籍《萨加世系史》载“元帝辖十一
单选题四分体是指A.一对联会的同源染色体含有
艾美特电风扇好不好
单选题点M(-3,m)和N(n,8)在函数y=-3x+2的图
石楼县环境保护局在什么地方啊,我要处理点事
推荐资讯
读“欧洲西部图”,回答问题.(1)填出图中
无为县人民检察院反贪污贿赂局地址在哪?我要
显卡什么时候买最便宜
男主角是穿越来的,他觉醒的武魂是五爪金龙
世界上人口分布是不均匀的,人口疏密程度可以
补出下列名句名篇中的空缺:1、山围故国周遭
清新区工商行政管理局太平工商所地址在哪?我
黄土豆与红土豆哪个更营养,更好吃?
生态系统中逐级流动的能量A.小于生产者所固定
小女神花铃第二部
组成物质的分子之间之间存在相互作用的______
眼影和眼影笔,哪个好用?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?