2011-06-29 49 views
3

在iOS瀏覽器(demo)上執行之前,OnClick事件的超時時間爲〜400ms。我想將其更改爲TouchStart事件,以供所有具有onClick的DOM元素使用。我怎樣才能做到這一點?如何將iOS上的所有onClick事件更改爲TouchStart?

我使用jQuery和我試圖檢查點擊功能的所有元素:

$('*').each(function() { 
    if($(this).click != null) { 
    // BUT all elements in DOM has click 
    } 
}) 

回答

0

我沒有一個確切的答案,但我認爲你應該能夠讓這個做你想做的。

對於頁面上的每個有OnClick的元素,添加一個類 - 比如TouchTarget。然後在你的啓動功能中使用它。

$('.TouchTarget').bind('touchstart', function (e) { 
    e.preventDefault(); 
    touchStart(e, this); 
}); 

創建一個處理函數,看起來像這樣:

function touchStart(pEvent, pElement) { 
//Do something with the touch. 
} 

如果你只想要註冊,如果觸摸是可用的,那麼你就可以

if (Modernizr.touch) { 
} 

我保護綁定調用相信導致OnClick延遲的原因是因爲Safari正在等待查看觸摸是否真的是點擊或拖動或其他手勢。這會很快識別出簡單的觸摸。當我需要快速觸摸時,我通常會同時綁定touchstart和touchend,以便touchstart提供視覺反饋,然後touchend用「click」進行操作。此方法沒有內置延遲。

相關問題