2015-10-13 27 views
1

我正在一个需要大量点击事件的网站上工作,但我无法为编码的爱找出如何使其兼容桌面和触摸设备。如何防止使用多个事件处理程序运行两次事件功能?

下面是一个典型的单击事件,它同时使用clicktouchend既包括台式机和触摸设备:

$('#myBtn').on('click touchend', function(e) { 
    // Some code 
}); 

这个虽然问题是,它在触摸设备上运行两次,这是一个巨大问题。我尝试过使用touchstart并以逗号分隔('click, touchend'),但没有运气,在搜索网页时也找不到解决方案。

这是确保点击事件正确启动的方法吗?如果是这样,为什么它不按预期工作?如果不是,那么更适合的方式是什么?

+0

时,你只用 “点击” 是什么故障? – spender

+1

缺少''',我会建议使用这样的事情'var event ='click'; if(touchDeviceSupportingTouchend){event ='touchend'; } $('selector')。on(event,function()...' – Tushar

+0

@spender如果仅使用点击触摸设备,则该功能不会运行 – Chrillewoodz

回答

2

用这样的方式:

var eventH = ""; 
if ('ontouchstart' in document.documentElement) 
    eventH = "touchend"; 
else 
    eventH = "click"; 
// Just taking care of exceptions. 
if (eventH != "") 
    $('#myBtn').on(eventH, function(e) { 
    // Some code 
    }); 
+1

这似乎是工作,欢呼声。 – Chrillewoodz

相关问题