鋒利的jQuery第十二期

  • 2020 年 4 月 10 日
  • 筆記

又到了我們說jQuery的日子了,上一期小編提到了一個符的控制權的問題,剛開始以為是自己對這個問題理解不深,誤以為很簡單,所以沒有馬上搞出來。但是解決了之後發現。。。其實就是很簡單,只是因為是在原有的基礎上進行修改而破壞了一些原有的js的功能結構,導致問題的出現。那麼今天咱們今天就來說一說符的控制問題。

首先,這個問題的出現是因為除了jQuery框架中使用符以外,還有許多封裝的js庫都可能使用這一符號,大部分就是jQuery本身相關的一些庫,即jQuery.xxx.js,這些庫通常都會使用符號,當我們同時使用兩個庫的時候就會出現衝突,會報出 is not a function類似的錯誤,那比較簡單的方法就是使用自定義的快捷方式。無論哪一種解決方案,我們都要解釋一下jQuery.noConflict();這句代碼,本身的含義就是移交符的控制權。即該行代碼之後的部分不再由jQuery控制符,交給另外的庫來處理。之前交給大家的方法就是使用自定義的快捷方式var j = jQuery.noConflict();這樣一來,j和就都可以等價於jQuery,在我們移交控制權之後,符號受另外一個庫的控制,j依然等價於jQuery,無論是順序的執行結構還是兩個庫存在穿插使用的結構,這種做法都是比較靈活的,我們可以在一開始就將控制權移交出去,然後用到jQuery的部分我們使用快捷方式j,另外庫的部分使用

但是小編在原有的項目中,看到了另外一種高明的做法,不愧為百度的前端工程師寫出的代碼。具體做法就是將本js文件需要用jQuery獲取的對象先全部獲取,存放到js的數組中,然後在使用的時候直接調用預先存好的對象,這樣就能解決很多問題,無論是元素屬性值的獲取還是事件的綁定都沒有問題,我們只需要對綁定事件的方法體的內容進行$符的處理。

希望大家在以後遇到類似問題的時候本文章能夠有所幫助。