有没有办法用JQuery和AngularJS中的touchend侦听器替换所有单击侦听器?

时间:2014-01-15 09:55:51

标签: javascript jquery angularjs

我确定你已经听过很多,但我似乎无法找到一个好的解决方案。

有没有办法与click个听众交换任何touchend个听众?

由于我的iPad网络应用程序会自动调整屏幕大小,我不认为我们的用户(内部,无论如何)需要双击才能缩放,300毫秒等待真的很残酷。

我可以做点什么吗

$(document).click(function(e){
   e.preventDefault();
});
$(document).bind('touchend', function(e){
   e.currentTarget.click();
});

或类似的东西会影响整个页面/应用程序全局?理想情况下,只有在我检测到页面上的touchEvent功能时,我才会运行此代码。 (虽然带有鼠标的触摸屏显示器会让事情混乱......)

提前致谢!

4 个答案:

答案 0 :(得分:2)

如果您的应用程序已经开发,那么一个银弹方法可能是插入一个全局处理触摸事件的垫片(同时抑制默认鼠标事件)并调度相应的鼠标事件。

有一些库可以做到这一点。我成功使用的一个是: fastclick 。它设置简单,可配置,不会在桌面浏览器上插入监听器,并且会消除300ms的延迟。

答案 1 :(得分:1)

在模块中包含模块ngTouch(http://docs.angularjs.org/api/ngTouch)。

答案 2 :(得分:1)

other question中所述,您可以使用此代码:

// List bound events:
console.dir( jQuery('#elem').data('events') );

// Log ALL handlers for ALL events:
jQuery.each($('#elem').data('events'), function(i, event){
    jQuery.each(event, function(i, handler){
        console.log( handler.toString() );
    });
});

// You can see the actual functions which will occur
// on certain events; great for debugging!

获取侦听器然后替换/修改。希望它有所帮助!

答案 3 :(得分:0)

我最终做的是使用AngularTouch(ngTouch)。

这很有效,但我在混音方面遇到了问题:

  • angularJS

  • angularTouch

  • jquery的

  • jqueryui(可拖动和可放置)

  • jquery touchpunch(移动版)

我最终做的是使用:(按此顺序)

  • jquery的

  • jQueryUI的

  • jquery touchpunch

  • angularjs

  • Fastclick

这样可以快速点击并拖放手机!