產生條件
若是綁定tap方法的dom元素在tap方法觸發後會被幹掉(隱藏,移走,刪掉),則它底下同一位置的dom元素會觸發click事件、或者有瀏覽器認爲能夠被點擊有交互反應的dom元素(例如input的focus事件),這個稱爲「點透」現象。瀏覽器
產生緣由
click事件在移動端會有延遲(由於須要檢測雙擊事件,移動端click300毫秒延遲的緣由)
zepto的tap事件是綁定在document.body上的,tap事件執行(冒泡以後)以前,click事件已經被"執行",只是被延遲了而已,因此在tap事件用preventDefault也無濟於事
解決方案
底下的元素也使用tap事件,即上下兩個元素使用同一種事件(tap/click)
不要使用tap事件,使用touchend事件處理,並preventDefault掉(不優雅,並且暴力)
使用fastclick庫(把click的300ms延遲幹掉)dom