關於IOS下click事件委托失效的解決方案


一、由於某些特殊情況下,需要用到事件委托,比如給動態創建的DOM綁定click事件,這里就需要事件委托(這里就牽扯到:目標元素和代理元素)
目標元素:動態創建的元素,最終click事件需要綁定到該元素

代理元素:動態創建的元素的父級元素,或者document,body等。

二、BUG情況

當使用事件委托給【目標元素】添加 click 事件時,如果【代理元素】是 document或body,並且【目標元素】是默認不可點擊的(如 div, span 等),此時click事件會失效。如果【目標元素】是可點擊的(比如 button、a 標簽),此時click事件還是有效的。

三、解決方案3種

1、【代理元素】可以是【目標元素】的父級元素,document,body等,但【目標元素】必須為a或者button可點擊的標簽。

盡量使用touch事件或者tap事件,如果你需要click事件的延遲效果來達到某些交互,盡量把click事件綁定在a或者button可點擊的標簽上。

2、【代理元素】必須是【目標元素】的非document,body父級元素,【目標元素】可以是任意標簽。

將click事件委托到非document或body的父級元素上。

3、【代理元素】可以是【目標元素】的父級元素,document,body等,【目標元素】可以是任意標簽,但是要設置cursor: pointer;。

出現上述點擊事件失效的問題,讓我們不得不體會到標簽語義化的重要性,於是這里建議大家寫代碼時,【目標元素】多用a或者button可點擊的標簽,【代理元素】多用非document,body父級元素。

 

本人摘自:http://www.cnblogs.com/camille666/


免責聲明!

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



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