原文出處:
作為技術狂熱分子的職業本能,看到乙個技術產品的功能,總會忍不住想知道它是怎麼被實現的。比如我每每看到別人**乙個很炫的介面或者很酷的功能,就忍不住開啟了瀏覽器的控制台。。。
好,不扯遠,說說當你想看到**上某個元素繫結的事件函式的**時應該怎麼做吧。
所謂原生就是通過addeventlistener方法繫結到dom元素上。這個好辦:
然後就能看到所有繫結在該元素的事件了,點開後,找到handler,右擊滑鼠,選擇「show function definition」選單。
就能跳到繫結到該元素的事件函式的原始碼位置了。有圖有真相:
嗯,我知道,你遇到問題了吧,所有jquery繫結的事件函式,你通過上面的方式,跳到的都是jquery的**,而且永遠是那乙個地方。
看了跟沒看一樣。所以,寶哥在這裡教你針對jquery的檢視方式。
好的,我知道,你肯定又遇到問題了。因為當你使用的jquery2.x版本的jquery時,上面的這個方法又不work了,原因是2.x的**架構變了。其實2.x版本的事件仍然是用的cache機制,但不像1.x版本暴露到外面去了,而是封裝起來,並且存在了閉包物件datapriv中,而且一般使用的是jquery的壓縮版本,這個datapriv名字你也無法檢視到。所以在檢視過jquery2.x版本的原始碼後,寶哥教你如何定位它:
另:
以上預設是在chrome瀏覽器下做的操作,其實在firefox下也是類似的,相信作為乙個技術人員,你應該能舉一反三的。至於ie嘛,呃…當我沒說哈。:)1.為省去檢視屬性的麻煩,jquery1.x可以直接在控制台執行
$.cache[$('#clickme').get(0)[$.expando]]
輸出元素上繫結的東西,而不是先去檢視元素上jquery******x的屬性的值了
2.經過一篇查閱和測試。有乙個新的目前最省力而且jquery1,jquery2都適用的辦法是,直接在控制台輸入$._data($('#clickme').get(0))
,即可把繫結在元素的東西都輸出來。但是,從jquery2的原始碼的注釋中發現,$._data會在之後的新版本中廢除。所以上面介紹的方法仍然是很有價值的。授人以魚,不如授人以漁嘛,:)
檢視jquery繫結的事件函式
所謂原生就是通過addeventlistener方法繫結到dom元素上。這個好辦 嗯,我知道,你遇到問題了吧,所有jquery繫結的事件函式,你通過上面的方式,跳到的都是jquery的 而且永遠是那乙個地方。看了跟沒看一樣。所以,寶哥在這裡教你針對jquery的檢視方式。好的,我知道,你肯定又遇到問...
jQuery事件的繫結
在沒學習jquery之前需要html中使用on 的形式去繫結,這樣會讓 顯得很混亂 html只負責內容的描述 將要繫結的事件的元素選擇出來然後在js中實現繫結,就可以解決這一情況,可以使用jq實現這以操作,而且jq的事件繫結更靈活。jquery繫結單擊事件 方式1 function 方式2 func...
jQuery事件的繫結
jquery事件的繫結 在沒學習jquery之前需要html中使用on 的形式去繫結,這樣會讓 顯得很混亂 html只負責內容的描述 將要繫結的事件的元素選擇出來然後在js中實現繫結,就可以解決這一情況,可以使用jq實現這以操作,而且jq的事件繫結更靈活。jquery繫結單擊事件 方式1 funct...