2015-10-13 66 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

相關問題