關於iphone點擊事件無效,安卓沒問題


因為給幾個線上的頁面做了js動態代碼,圖省事就用了jQuery框架,也是怪當時自己沒有詳細的測試過,結果頁面給別人了之后才發現jQuery的這個bug,不過也好,至少有所收獲,如果不出現這個問題,估計我也想不到要去看jQuery官方的bug列表了。這是后話了!

     jQuery的live綁定為什么會在mobile safari上失效呢?其實可以追溯到jQuery里live的實現方式。live的實現方式實際上是通過事件委托機制來實現的,也就是說是通過諸如冒泡的方式在DOM樹的相應根節點上綁定事件,這樣此結點下的所有節點都會默認綁定了此事件。mobile safari上之所以live會失效就是因為mobile safari可能阻止了事件的冒泡(這里也只是推測,實質的原因還在進一步查找),沒有給根節點綁定相應的事件,從而導致了問題的產生。

      jQuery在mobile safari上使用live進行事件綁定會失效的解決方案有如下兩個:

               (1)將live綁定更改成bind綁定

                        但是這個前提是不需要給動態新生成的元素(如ajax請求后新建的元素)進行事件綁定,

                        否則建議采用第二種解決方案。

               (2)在需要進行事件綁定的元素上(包括新建元素)添加onclick=""

                        這個方案比較完美,可以完全保留live的事件委托的實現方式,只是比較麻煩的是需要多

                        寫很多的onclick=""。

 

這樣的話也有弊端,最后發現一個問題可以解決,在live綁定的時候,給元素添加樣式cursor:pointer;就生效了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM