摘要:今天想使用點擊事件綁定動態(tài)獲取的元素,但又不想將事件注冊在成功函數(shù)體內(nèi)。
今天想使用點擊事件綁定動態(tài)獲取的元素,但又不想將事件注冊在post成功函數(shù)體內(nèi)。
事件委托,顧名思義就是講子元素事件委托給上級元素 (這是寫上級元素,包含document根元素,因為不局限于它的父元素)
先說一下為什么動態(tài)獲取的元素直接綁定不可以:
因為動態(tài)元素是后生成的,在事件注冊的時候,它還沒有生成,一般 我們是通過: $.post(url,function(data){ //這里拿到data,然后去插入節(jié)點,生成元素 //如果我們要在這里注冊事件,當然沒問題,直接綁定即可, //因為現(xiàn)在元素已經(jīng)生成了 })
很不幸,基于業(yè)務(wù)的復雜性,必須要將改事件抽出來,注冊到全局(因為要做多一層緩存)
既然要在元素未生成前,注冊事件,那么將該事件綁定給上級元素: $(documnet).on("click","要綁定的事件元素", function(){ // to do })
說一下為什么要這樣做:
我在做一個優(yōu)惠券功能,優(yōu)惠券有使用和未使用的區(qū)別,那么就有這樣一個需求: 點擊使用:去請求使用的; 點擊未使用:去請求未使用的;
我不可能每點擊一次都去請求一次吧,我希望我請求過了的數(shù)據(jù),就不希望它再請求了
這里就要加一個緩存給它,設(shè)兩個變量,分別保存使用和未使用的, 點擊它的時候,只要對應(yīng)的變量不為空,就直接渲染,為空就去請求 var willData, doneData, state; function session(){ //state是用來判斷點擊的是已使用還是未使用的,忽略即可 if(state == 0) { if(willData) { $("#coupon-box").append(willData) } else { $.post(url,function(){ $("綁定事件元素").on(function(){}) }) } } else { if(doneData) { $("#coupon-box").append(doneData) } else { $.post(url,function(){ $("綁定事件元素").on(function(){}) }) } } }
寫完邏輯后,(如果是在post函數(shù)體注冊的事件)就會發(fā)現(xiàn)一個很奇怪的問題
當激活緩存,去插入元素時,發(fā)現(xiàn)點擊事件失效了; 因為我是通過移除remove()和append()再插入去切換使用和未使用的, 所以已經(jīng)通過post綁定的元素,被我移除了,通過session去插入的元素并 沒有注冊點擊事件,當然我們也可以在給它注冊一次,畢竟要提高代碼重用 所以這里用了事件委托: $("上級元素").on("click","綁定元素",function(){ })
=====本文到此結(jié)束,代碼比較少,最重要的是思路,對于剛?cè)腴T的小伙伴可以看一看哈!
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/107284.html
摘要:今天我們來聊聊前端的監(jiān)控我們?yōu)槭裁葱枰岸吮O(jiān)控為了獲取用戶行為以及跟蹤產(chǎn)品在用戶端的使用情況,并以監(jiān)控數(shù)據(jù)為基礎(chǔ),指明產(chǎn)品優(yōu)化方向前端監(jiān)控分為三類性能項目數(shù)據(jù)監(jiān)控異常監(jiān)控性能監(jiān)控衡量前端的性能的指標是時間那么如何監(jiān)測時間呢,瀏覽器給我們提 今天我們來聊聊前端的監(jiān)控 我們?yōu)槭裁葱枰岸吮O(jiān)控 ? 為了獲取用戶行為以及跟蹤產(chǎn)品在用戶端的使用情況,并以監(jiān)控數(shù)據(jù)為基礎(chǔ),指明產(chǎn)品優(yōu)化方向 前端監(jiān)控...
摘要:所以今天,就和大家一起聊一聊前端的安全那些事兒。我們就聊一聊前端工程師們需要注意的那些安全知識。殊不知,這不僅僅是違反了的標準而已,也同樣會被黑客所利用。 歡迎大家收看聊一聊系列,這一套系列文章,可以幫助前端工程師們了解前端的方方面面(不僅僅是代碼):https://segmentfault.com/blog... 隨著互聯(lián)網(wǎng)的發(fā)達,各種WEB應(yīng)用也變得越來越復雜,滿足了用戶的各種需求...
摘要:前言無論是面試還是在討論瀏覽器優(yōu)化過程中,都會涉及到去抖動和節(jié)流的問題。總的來說,這二者是一種限制事件觸發(fā)頻率的方式。不同的是,節(jié)流會指定事件觸發(fā)的時間間隔而去抖動會指定事件不觸發(fā)的時間間隔。 前言 無論是面試還是在討論瀏覽器優(yōu)化過程中,都會涉及到去抖動和節(jié)流的問題。總的來說,這二者是一種限制事件觸發(fā)頻率的方式。不同的是,節(jié)流會指定事件觸發(fā)的時間間隔;而去抖動會指定事件不觸發(fā)的時間間隔...
摘要:前言無論是面試還是在討論瀏覽器優(yōu)化過程中,都會涉及到去抖動和節(jié)流的問題。總的來說,這二者是一種限制事件觸發(fā)頻率的方式。不同的是,節(jié)流會指定事件觸發(fā)的時間間隔而去抖動會指定事件不觸發(fā)的時間間隔。 前言 無論是面試還是在討論瀏覽器優(yōu)化過程中,都會涉及到去抖動和節(jié)流的問題。總的來說,這二者是一種限制事件觸發(fā)頻率的方式。不同的是,節(jié)流會指定事件觸發(fā)的時間間隔;而去抖動會指定事件不觸發(fā)的時間間隔...
摘要:減少作用域鏈上的查找次數(shù)。盡量少用全局變量,盡量使用局部變量。全局變量如果不手動銷毀,會一直存在,造成全局變量污染,可能很產(chǎn)生一些意想不到的錯誤,而局部變量運行完成后,就被會被回收使用代替大量的內(nèi)聯(lián)樣式修改。性能優(yōu)化還需要繼續(xù)深入研究。 關(guān)于前端性能優(yōu)化的討論一直都很多,包羅的知識也很多,可以說性能優(yōu)化只有更好,沒有最好。前面我寫了一篇關(guān)于css優(yōu)化的總結(jié)文章,今天再從javascri...
閱讀 1241·2021-11-08 13:25
閱讀 1440·2021-10-13 09:40
閱讀 2774·2021-09-28 09:35
閱讀 736·2021-09-23 11:54
閱讀 1123·2021-09-02 15:11
閱讀 2431·2019-08-30 13:18
閱讀 1668·2019-08-30 12:51
閱讀 2686·2019-08-29 18:39