2014-04-04 68 views
0

我有一個頁面有幾個小框,當您點擊它們時,它們展開/摺疊以顯示細節。現在我正在使用touchstart事件處理程序來觸發展開/摺疊,並且一切都很好。jQuery touchstart touchmove touchend互動性

我遇到的唯一問題是,當您嘗試滑動滾動頁面時,如果觸摸的第一個位置碰巧位於其中一個框內,則會觸發展開,並且由於event.preventDefault()在touchstart事件處理程序中被調用時,它會阻止用戶滾動。 我想要發生的事情是,如果碰巧觸摸它,您可以滑動滾動而無需展開框,即可在滑動時忽略touchstart事件。

我的第一反應是簡單地從touchstart移動展開/摺疊功能,touchend,然後附加一個處理程序的框,touchmove和調用event.stopImmediatePropagation(),這將阻止touchend從當你開始滾動射擊。然而,這種方法的效果似乎不如touchstart那麼敏捷,因爲它需要相當長時間的刻意的觸摸才能開啓,而touchstart非常快速且響應迅速並且工作得非常出色。

我已經在iPad上完成了我的測試(第四代,在Safari和Chrome中測試過),這是touchend沒有很好響應的地方。我還在Nexus 10 Android平板電腦(Chrome)上進行了測試,並且touchend似乎並沒有被解僱。

有沒有人有任何建議1)一種方法來改善我所概述的解決方案或2)另一種方式去做這件事?

回答

相關問題