jQuery大事托付之Safari__第1頁
jQuery大事托付之Safari__第2頁
jQuery大事托付之Safari__第3頁
jQuery大事托付之Safari__第4頁
jQuery大事托付之Safari__第5頁
免費預(yù)覽已結(jié)束,剩余1頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、jQuery大事托付之Safari_ 這篇文章主要介紹了jQuery大事托付之Safari 的相關(guān)資料,特別不錯,具有參考借鑒價值,需要的伴侶可以參考下 什么是大事托付 大事托付是Jquery中一種大事綁定的方式,不同于常見的大事綁定方式將大事綁定在目標(biāo)元素上,而是將大事綁定在父級元素上通過大事冒泡來執(zhí)行綁定函數(shù)。 /常見的大事綁定(Jquery) $(element).click(function() /do something ) /大事托付(Jquery) $(parents).on(click,element,function() /do something ) 大事托付的原理 大事托

2、付將大事監(jiān)聽綁定在目標(biāo)元素的父級上,當(dāng)目標(biāo)元素響應(yīng)大事時冒泡到綁定大事的父級上,進(jìn)行推斷該大事的目標(biāo)元素是否是傳入的元素,假如是就執(zhí)行傳入的函數(shù)。 /簡潔實現(xiàn)Jquery的大事托付 ul id=oParent/ul a id=oClick href=javascript:void(0)click/a script type=text/javascript var oParent=document.getElementById(oParent),oClick=document.getElementById(oClick); Ototype.on=function(ev,fn,o

3、bj) var sClass=Ototype.toString.call(obj); if(obj|sClass.indexOf(HTML)=-1)/假裝推斷一下是否需要大事托付 this.addEventListener(ev,function(e) var e=e|window.event; if(e.target=obje.type=ev) fn.call(e.target);/傳入目標(biāo)元素 ,false); else this.addEventListener(ev,fn,false); document.on(click,function()console.log(

4、this),oClick); 沒有做任何的兼容以及其他處理,只是為了了解原理,大家有什么問題可以留言指出。 大事托付有什么用呢 說這么多東西,究竟大事托付有什么用呢?我認(rèn)為大事托付最大的好處在于,動態(tài)生成的元素還會保留原有的大事綁定。 /a點擊的時候,ul都會新增一個li,新增的li都有綁定大事 ul id=oUl lili /ul a id=addBtn href=javascript:void(0) target=_self新增li/a script /用法常用大事綁定實現(xiàn) $(#oUl).find(li).on(click,function() /do something ) $(#ad

5、dBtn).on(click,function() $(#oUl).append(li/li); $(#oUl).find(li).on(click,function() /do something ) ) /先不說性能問題,這樣的實現(xiàn)美觀,符合規(guī)律嗎 /用法大事托付實現(xiàn) $(document).on(click,#oUl li,function()/這里托付元素是敏捷的,只要是父級就行,只是不是動態(tài)生成(動態(tài)生成就失去大事托付的意義了) /do something ) $(#addBtn).on(click,function() $(#oUl).append(li/li); ) /這樣的代碼

6、是不是簡潔多了,解決了重復(fù)綁定的問題 大事托付之Sarfari 一次項目中遇到的問題,click大事托付在移動端的safari上失效了 p class=loadmore加載更多/p script type=text/javascript $(document).on(click,.loadmore,function() alert(ok) ) /script 看上面的代碼,很簡潔吧,沒什么問題吧,除了ios的safari,其他掃瞄器都能正常的彈出“ok”,一開頭想到會不會是什么有地方把冒泡阻擋了,但是沒有找到,jq的問題?,換了還是不行。正常的綁定(不用法大事托付)沒問題,其他想到會不會是jq

7、的bug,假如是jq的bug,那么以前的項目也會有類似的bug,于是到線上去找相關(guān)的代碼 a id=test target=_slef href=javascript:void(0)test/a script $(document).on(click,#test,function() /do something ) /script 在安卓和ios設(shè)備上測試,沒有任何問題,代碼都差不多啊,但是大家留意到?jīng)],標(biāo)簽不一樣(html語義化多重要?。?,于是將p換成a,問題完善解決,最終去谷歌了一下。 ios的safari中當(dāng)用法托付給一個元素添加click大事時,假如大事是托付到 document 或 body 上,并且托付的元素是默認(rèn)不行點擊的(如 div, span 等),此時 click 大事會失效。 緣由很清晰了,safari中不行點擊元素的click大事不會冒泡到document和body上。 解決方法 1.將click大事挺直綁定到元素上(不用法大事托付) 2.需要綁定click大事的元素改成a或者button等可點擊元素 3

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論