是否有一种更优雅的方法来检测触摸事件支持并分配一个“点击”或“;touchend"事件
Is there a more elegant way to detect touch events support and assign either a "click" or "touchend" event?
var ClickOrTouchEvent = ("ontouchend" in document.documentElement ? "touchend" : "click");
$("#MyButton").on(ClickOrTouchEvent, function () {
// Do something
});
这是可行的,但可能有一种更优雅的方法来检测触摸事件支持并分配"click"或"touchend"事件。
人们已经创建了许多插件来为他们基于jquery的web应用添加更高级的触摸支持,比如拖放。你可以使用其中一种,而不是自己制作。
也就是说,在我的经验中,他们似乎都有自己奇怪的问题,所以你可能不得不下周。看起来你的解决方案和他们的大多数都是同一个家族的。下面是一些流行的插件,以及它们用来决定触摸还是点击的解决方案:
TouchPunch将触摸添加到所有内容中,如下所示:
// Detect touch support and save it in support
$.support.touch = 'ontouchend' in document;
// Ignore browsers without touch support
if (!$.support.touch) {
return;
}
//rest of plugin code follows
jquery-ui-for-ipad和iphone有一个方法,你必须调用它来添加触摸事件到所需的元素…但前提是浏览器支持。
// Same deal. Detect touch support and save it in support
$.extend($.support, {
touch: "ontouchend" in document
});
//
// Hook up touch events
//
$.fn.addTouch = function() {
if ($.support.touch) {
this.each(function(i,el){
el.addEventListener("touchstart", iPadTouchHandler, false);
el.addEventListener("touchmove", iPadTouchHandler, false);
el.addEventListener("touchend", iPadTouchHandler, false);
el.addEventListener("touchcancel", iPadTouchHandler, false);
});
}
};
....
然后对应用jQuery UI函数的元素调用addTouch:
$('Element').dialog().addTouch();
相关文章:
- 使用类从一个标记中双击事件
- 如何在elfinder插件(一个文件管理器插件)上获得上传前事件
- 导航到特定事件的另一个变量页面
- 来自文档或下一个静态父级的事件委派
- 在创建对象后附加一个jquery事件
- 将添加一个相同类型的事件附加或覆盖以前添加的具有相同名称的事件
- 如何在所有ng点击事件AngularJS上启动一个方法
- 是否<asp:文本框>有一个onFocusLost事件
- React应用程序:道具在下一个事件后更新
- 在Angular ui路由器中,如何将事件从一个视图发送到另一个视图
- 如何从另一个处理程序内部取消JavaScript事件处理程序函数的执行
- 算法:从数组(javascript/angular)中按当前日期获取上一个和下一个事件
- 如何向onClick事件处理程序传递一个接受参数的函数,并且仍然将该函数绑定到组件's”;这个“;上下文
- 全局屏幕span onclick触发一个事件javascript
- 事件循环的MEAN.JS setInterval进程(从另一个服务器获取数据)
- 添加一个javascript函数来下载elfinder上的事件
- jQuery触发器事件在一个循环中多次出现
- 'mousemove'画布中的事件侦听器-指针仅在最后一个矩形中更改
- 是否可以同时为一个元素的所有事件指定阻止默认值
- angularjs调用事件中控制器的一个函数