亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

jQuery事件委托之Safari

2019-11-20 09:33:18
字體:
來源:轉載
供稿:網友

什么是事件委托

事件委托是Jquery中一種事件綁定的方式,不同于常見的事件綁定方式將事件綁定在目標元素上,而是將事件綁定在父級元素上通過事件冒泡來執行綁定函數。

//常見的事件綁定(Jquery)$(element).click(function(){//do something})//事件委托(Jquery)$(parents).on("click",element,function(){//do something})

事件委托的原理

事件委托將事件監聽綁定在目標元素的父級上,當目標元素響應事件時冒泡到綁定事件的父級上,進行判斷該事件的目標元素是否是傳入的元素,如果是就執行傳入的函數。

//簡單實現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");Object.prototype.on=function(ev,fn,obj){var sClass=Object.prototype.toString.call(obj);if(obj||sClass.indexOf("HTML")===-1){//假裝判斷一下是否需要事件委托this.addEventListener(ev,function(e){var e=e||window.event;if(e.target===obj&&e.type===ev){fn.call(e.target);//傳入目標元素}},false);}else{this.addEventListener(ev,fn,false);}}document.on("click",function(){console.log(this)},oClick); 

沒有做任何的兼容以及其他處理,只是為了了解原理,大家有什么問題可以留言指出。
事件委托有什么用呢

說這么多東西,到底事件委托有什么用呢?我認為事件委托最大的好處在于,動態生成的元素還會保留原有的事件綁定。

//a點擊的時候,ul都會新增一個li,新增的li都有綁定事件<ul id="oUl"><li><li></ul><a id="addBtn" href="javascript:void(0)" target="_self">新增li</a><script>//使用常用事件綁定實現$("#oUl").find("li").on("click",function(){//do something})$("#addBtn").on("click",function(){$("#oUl").append("<li></li>");$("#oUl").find("li").on("click",function(){//do something})})//先不說性能問題,這樣的實現美觀,符合邏輯嗎//使用事件委托實現$("document").on("click","#oUl li",function(){//這里委托元素是靈活的,只要是父級就行,只是不是動態生成(動態生成就失去事件委托的意義了)//do something})$("#addBtn").on("click",function(){$("#oUl").append("<li></li>");})//這樣的代碼是不是簡潔多了,解決了重復綁定的問題

今天的主題,事件委托之Sarfari

一次項目中遇到的問題,click事件委托在移動端的safari上失效了

<p class="loadmore">加載更多</p><script type="text/javascript">$(document).on("click",".loadmore",function(){alert("ok")})</script>

看上面的代碼,很簡單吧,沒什么問題吧,除了ios的safari,其他瀏覽器都能正常的彈出“ok”,一開始想到會不會是什么有地方把冒泡阻止了,但是沒有找到,jq的問題?,換了還是不行。正常的綁定(不使用事件委托)沒問題,其他想到會不會是jq的bug,如果是jq的bug,那么以前的項目也會有類似的bug,于是到線上去找相關的代碼

<a id="test" target="_slef" href="javascript:void(0)">test</a><script>$("document").on("click","#test",function(){//do something})</script>

在安卓和ios設備上測試,沒有任何問題,代碼都差不多啊,但是大家注意到沒,標簽不一樣(html語義化多重要?。?,于是將p換成a,問題完美解決,最后去谷歌了一下。

ios的safari中當使用委托給一個元素添加click事件時,如果事件是委托到 document 或 body 上,并且委托的元素是默認不可點擊的(如 div, span 等),此時 click 事件會失效。

原因很清楚了,safari中不可點擊元素的click事件不會冒泡到document和body上。

解決辦法

1.將click事件直接綁定到元素上(不使用事件委托)

2.需要綁定click事件的元素改成<a>或者<button>等可點擊元素

3.將click事件委托到非doucument或body的父級元素上

4.給目標元素添加一條css樣式 cursor:pointer(推薦這種,方便省事)

以上所述是小編給大家介紹的jQuery事件委托之Safari,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網網站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品一二三视频| 日韩视频在线一区| 中文字幕最新精品| 欧美国产中文字幕| 中文字幕免费精品一区高清| 国产伊人精品在线| 久久综合伊人77777尤物| 欧美亚洲日本网站| 久久久久久久激情视频| 国产乱肥老妇国产一区二| 亚洲精品自产拍| 日韩专区在线观看| 91在线观看免费| 久久精品国产一区二区三区| 亚洲国产婷婷香蕉久久久久久| 国产999精品久久久| 久久影视电视剧免费网站清宫辞电视| 欧美日韩免费区域视频在线观看| 国产91久久婷婷一区二区| 深夜福利91大全| 上原亚衣av一区二区三区| 欧美黑人极品猛少妇色xxxxx| 最近2019年手机中文字幕| 日韩av在线电影网| 国产噜噜噜噜久久久久久久久| 日韩欧美在线第一页| 欧美黑人巨大xxx极品| 亚洲自拍偷拍一区| 欧美肥臀大乳一区二区免费视频| 精品一区二区三区电影| 久久亚洲国产精品成人av秋霞| 欧美成人午夜影院| 亚洲欧美另类国产| 精品电影在线观看| 亚洲二区在线播放视频| 欧美性xxxxx极品| 在线丨暗呦小u女国产精品| 亚洲一区二区三| 精品欧美国产一区二区三区| 国产精品免费久久久久影院| 久久97精品久久久久久久不卡| 国产成人啪精品视频免费网| 亚洲成人激情图| 国产精品99久久久久久www| 国产精品视频在线播放| 粉嫩老牛aⅴ一区二区三区| 国产精品爽爽爽爽爽爽在线观看| 欧美电影在线免费观看网站| 国产精品欧美亚洲777777| 中文字幕综合在线| 亚洲女成人图区| 97在线看福利| 欧美激情一区二区三区成人| 欧美—级高清免费播放| 日韩亚洲欧美中文高清在线| 欧美日韩亚洲91| 久久久国产视频| 国产精品福利小视频| 亚洲欧美日韩精品| 欧美重口另类videos人妖| 最好看的2019年中文视频| 欧美性jizz18性欧美| 亚洲欧美国内爽妇网| 久久久久中文字幕2018| 欧美极品少妇xxxxx| 久久人人看视频| 亚洲欧美日韩综合| 精品久久久久久久久久国产| 日本高清久久天堂| 91久久精品国产91性色| 日韩中文综合网| 久久亚洲精品视频| 黑人精品xxx一区一二区| 亚洲天堂男人天堂女人天堂| 国产精品 欧美在线| 欧美区二区三区| 91精品久久久久久久久久久久久久| 欧美精品久久久久a| 国产欧美一区二区三区在线看| 精品五月天久久| 亚洲人线精品午夜| 亚洲性xxxx| 亚洲精品一区二区三区不| 久久久久日韩精品久久久男男| 一区二区欧美日韩视频| 国产噜噜噜噜久久久久久久久| 97久久超碰福利国产精品…| 欧美成年人在线观看| 久久久国产精品视频| 国产精品成久久久久三级| 亚洲精品福利免费在线观看| 亚洲欧美国产精品va在线观看| 欧美一区在线直播| 中文字幕欧美日韩在线| 欧美日韩亚洲一区二区三区| 91精品国产免费久久久久久| 国产成人精品免高潮在线观看| 欧美日韩综合视频网址| 欧美激情xxxx性bbbb| 亚洲免费av片| 日本精品久久久久影院| 日韩av123| 亚洲成人xxx| 亚洲第一二三四五区| 2018日韩中文字幕| 在线观看日韩av| 日韩电影网在线| 久久综合色88| 欧美裸体男粗大视频在线观看| 亚洲精品小视频| 91sao在线观看国产| 热99精品里视频精品| 日韩欧美在线第一页| 精品欧美aⅴ在线网站| 91国产视频在线| 国模精品视频一区二区| 欧美性xxxx极品hd满灌| 欧美一区二区大胆人体摄影专业网站| 成人黄色影片在线| 国产成人aa精品一区在线播放| 日韩欧美国产骚| 日韩在线中文字| 精品久久久久久亚洲国产300| 国产精品日韩欧美大师| 在线观看欧美视频| 精品美女永久免费视频| 欧美精品一区二区三区国产精品| 久热精品视频在线免费观看| 国产精品啪视频| 国产精品女人久久久久久| 国产网站欧美日韩免费精品在线观看| 日韩欧美中文字幕在线播放| 亚洲精品视频在线观看视频| 91久久精品国产| 国产成人av在线播放| 韩剧1988免费观看全集| 精品欧美激情精品一区| 8050国产精品久久久久久| 国产精品精品久久久| 97在线观看视频国产| 日韩精品视频中文在线观看| 国产精品色悠悠| 国产精品盗摄久久久| 在线播放国产一区中文字幕剧情欧美| 日韩美女免费线视频| 国产福利视频一区二区| 亚洲综合大片69999| 欧美另类精品xxxx孕妇| 亚洲精品自在久久| 91久久国产精品91久久性色| 午夜精品理论片| 中文字幕在线成人| 久久五月情影视| 97在线视频观看| 中文字幕九色91在线| 国产精品久久久久秋霞鲁丝| 国产精品九九久久久久久久| 亚洲中国色老太| 国产精品永久免费观看| 中文字幕精品网| 亚洲国产精品视频在线观看| 九九综合九九综合| 国产专区精品视频| 欧美xxxx14xxxxx性爽|