標籤:
今天在網上看到一篇文章,關於JQ裡面事件綁定的區別,說說我自己看後的理解,本人菜鳥一枚,很多東西不懂 ,有理解錯誤的還望大神們多多指教
bind()方法是綁定事件最直接的方法,這個方法是綁定到document上存在最久的方法,也很好的解決了相容性方面的問題;
bind()方法的優點:1.很好的解決了各個瀏覽器的相容性問題;
2.非常方便簡單的能進行事件的綁定;
3.對於利用ID選出來的元素是非常好的,不僅僅是很快的可以hook上去(因為一個頁面只有一個id),而且當事件發生時,handler可以立即被執行實現方式;
bind()方法的缺點:1.bind()不會綁定在通過bind()添加的元素上面;
2.他會綁定到所有選出來的元素上面;
3.只有當頁面載入完成後才會執行bind()事件,可能會產生效率問題;
live()這個Binder 方法是通過冒泡機制來進行綁定的,由於在JQ1.7以上已經不推薦使用,在此不進行說明了;
deletage()這個方法在此之前從來沒有用過,看過萬丈後才知道還有這麼一個綁定事件的方法;
deletage()這個方法的有點像live()方法,但不同於live()方法的地方在於他不會將event綁定到所有的ducoment上面,而是由你決定將他綁定在什麼上面;
deletage()的優點:1.支援綁定到動態添加的元素上面
2.你可以選擇把那個那個事件放到你指定的元素上面;
deletage()的缺點:1.儘管減少了decoment已經很少了,但是還是需要來尋找那個元素上面綁定了那個事件。需要花一定的時間。
on():其實bind(),live(),delegate()都可以用on()方法來代替;就像undind();die()和undeletage()一樣可以用off()來實現一樣;
on()的優點:1.提供了一種統一的綁定事件的機制。
on()的缺點:1.隱藏了一些前面方法的細節。
總結:用bind()的代價是非常大的,他會把所有的時間綁定到DOM上面;
live()zai JQ1.7上面已經不被推薦使用了;
deletage()可以在動態元素上添加綁定事件;
on()結合了前面3種方法,為綁定事件有個統一。但是ON()不支援綁定動態添加的元素
JQ的live(),on(),deletage(),bind()幾個的區別