前幾天,要在移動端實現一系列的功能,用 HTML + JS。
按照以往的思路,事件綁定就直接 $(document).on "click", "selector", ()->
上了。
結果到了移動端打開頁面,發現綁定的事件全都沒有綁定上,按鈕點擊無效,滑動不反應。百思不得其解。
后來想了想,難道是因為綁定的時候頁面還沒有 ready?於是又把事件綁定全都寫在了 $(document).ready ()->
中。
刷新移動端瀏覽器,問題並沒有被解決。
然后我就想到,如果直接在目標元素上綁定事件是否可以成功呢?於是把所有的 $(document).on "click", "selector", ()->
換成了 $("selector").on "click", ()->
,重新打開移動端瀏覽器,刷新頁面,結果真的成了!
難道是冒泡攔截的這種事件處理機制不起作用?於是把之前代碼里的 $(document)
全部替換成目標元素的父元素,依舊使用 $("parent").on "click", "selector", ()->
這樣的辦法,結果居然也是可以的。
那么看來,就是在移動端上,$(document)
上綁定事件的確是有問題的,也許這只是 jQuery 的一個 bug 也說不定。限於時間,就沒有繼續深究了。