欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

jQuery 綁定事件的方式總結(jié)

 更新時間:2016年11月01日 17:18:50   投稿:lqh  
這篇文章主要介紹了jQuery 綁定事件的方式總結(jié)的相關(guān)資料,這里整理了幾種方法,需要的朋友可以參考下

  jQuery 綁定事件

jQuery提供了多種綁定事件的方式,每種方式各有其特點,明白了它們之間的異同點,有助于我們在寫代碼的時候進(jìn)行正確的選擇,從而寫出優(yōu)雅而容易維護(hù)的代碼。下面我們來看下jQuery中綁定事件的方式都有哪些。

     jQuery中提供了四種事件監(jiān)聽方式,分別是bind、live、delegate、on,對應(yīng)的解除監(jiān)聽的函數(shù)分別是unbind、die、undelegate、off。在開始看他們之前

    一:bind(type,[data],function(eventObject))

      bind是使用頻率較高的一種,作用就是在選擇到的元素上綁定特定事件類型的監(jiān)聽函數(shù),參數(shù)的含義如下:

      type:事件類型,如click、change、mouseover等;

      data:傳入監(jiān)聽函數(shù)的參數(shù),通過event.data取到??蛇x;

     function:監(jiān)聽函數(shù),可傳入event對象,這里的event是jQuery封裝的event對象,與原生的event對象有區(qū)別,使用時需要注意

   bind的源碼:

 bind: function( types, data, fn ) {
 
 return this.on( types, null, data, fn );
 
 }
 
$('#myol li').bind('click',getHtml);
 

bind的特點就是會把監(jiān)聽器綁定到目標(biāo)元素上,有一個綁一個,在頁面上的元素不會動態(tài)添加的時候使用它沒什么問題。但如果列表中動態(tài)增加一個“列表元素5”,點擊它是沒有反應(yīng)的,必須再bind一次才行。要想不這么麻煩,我們可以使用live。

jQuery還有一種事件綁定的簡寫方式如a.click(function(){});、a.change(function(){});等,它們的作用與bind一樣,僅僅是簡寫而已。

二:live(type, [data], fn)

live的參數(shù)和bind一樣,它又有什么蹊蹺呢,我們還是先瞄一眼源碼:

live: function( types, data, fn ) {
 
jQuery( this.context ).on( types, this.selector, data, fn );
 
return this;
 
}
 

 可以看到live方法并沒有將監(jiān)聽器綁定到自己(this)身上,而是綁定到了this.context上了。這個context是什么東西呢?其實就是元素的限定范圍,看了下面的代碼就清楚了:


$('#myol li').context; //document
 
$('#myol li','#myol').context; //document
 
$('#myol li',$('#myol')[0]); //ol

通常情況下,我們都不會像第三種方式那樣使用選擇器,所以也就認(rèn)為這個context通常就是document了,即live方法把監(jiān)聽器綁定到了 document上了。不把監(jiān)聽器直接綁定在元素上,你是不是想起事件委托機(jī)制來了呢?若沒有,可以點擊這里回憶一下。live正是利用了事件委托機(jī)制來 完成事件的監(jiān)聽處理,把節(jié)點的處理委托給了document。在監(jiān)聽函數(shù)中,我們可以用event.currentTarget來獲取到當(dāng)前捕捉到事件的 節(jié)點。下面的例子來揭曉:

$('#myol li').live('click',getHtml); 

三:live存在那樣的缺點,所以我們就思考,既然老爺子負(fù)擔(dān)那么重,可不可以別把監(jiān)聽器綁定在document上呢,綁定在就近的父級元素上不就好了。順應(yīng)正常邏輯,delegate誕生了。

參數(shù)多了一個selector,用來指定觸發(fā)事件的目標(biāo)元素,監(jiān)聽器將被綁定在調(diào)用此方法的元素上??纯丛创a:


delegate: function( selector, types, data, fn ) {
 
return this.on( types, selector, data, fn );
 
}
 

 又是調(diào)用了on,并且把selector傳給了on??磥磉@個on真的是舉足輕重的東西。照樣先不管它。看看示例先:

$('#myol').delegate('li','click',getHtml);

看了這么多,你是不是迫不及待想看看這個on的真實面目了呢,這就來:

on(type,[selector],[data],fn) 

參數(shù)與delegate差不多但還是有細(xì)微的差別,首先type與selector換位置了,其次selector變?yōu)榱丝蛇x項。交換位置的原因不好查證,應(yīng)該是為了讓視覺上更舒服一些吧。

我們先不傳selector來看一個例子:

$('#myol li').on('click',getHtml); 

可以看到event.currentTarget是li自己,與bind的效果一樣。至于傳selector進(jìn)去,就是跟delegate一樣的意義了,除了參數(shù)順序不同,其他完全一樣。

終于看到on的真實作用了,那么,這么多的事件綁定方式,我們該如何進(jìn)行選擇呢?

其實這個問題是完全不必糾結(jié)的,因為你已經(jīng)知道他們之間的區(qū)別了不是么?根據(jù)實際情況斟酌使用就行。不過官方有一個推薦就是盡量使用on,因為其他 方法都是內(nèi)部調(diào)用on來完成的,直接使用on可以提高效率,而且你完全可以用on來代替其他三種寫法。至于如何代替我想就不必這么直白的寫出來了,真正理 解它們的區(qū)別之后自然而然也就不是難事了。

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

相關(guān)文章

  • 提高SQL代碼可讀性的10種技巧

    提高SQL代碼可讀性的10種技巧

    SQL,這門備受推崇的編程語言,在關(guān)系數(shù)據(jù)庫操作中扮演著不可或缺的角色,然而,伴隨著數(shù)據(jù)庫模式的不斷增長和不斷演進(jìn),編寫和維護(hù)SQL代碼可能會變得相當(dāng)具有挑戰(zhàn)性,為了確保你的SQL代碼能夠具備高可讀性、易維護(hù)性以及出色的性能,以下是十個不容忽視的最佳實踐
    2023-10-10
  • centos 6.4下使用rpm離線安裝mysql

    centos 6.4下使用rpm離線安裝mysql

    這篇文章主要為大家詳細(xì)介紹了centos 6.4下使用rpm離線安裝mysql的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • mysql 8.0.12 winx64解壓版安裝圖文教程

    mysql 8.0.12 winx64解壓版安裝圖文教程

    這篇文章主要為大家詳細(xì)介紹了mysql 8.0.12 winx64解壓版安裝圖文教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • mysql刪除操作其實是假刪除問題

    mysql刪除操作其實是假刪除問題

    這篇文章主要介紹了mysql刪除操作其實是假刪除問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • MySQL thread_stack連接線程的優(yōu)化

    MySQL thread_stack連接線程的優(yōu)化

    當(dāng)有新的連接請求時,MySQL首先會檢查Thread Cache中是否存在空閑連接線程,如果存在則取出來直接使用,如果沒有空閑連接線程,才創(chuàng)建新的連接線程
    2017-04-04
  • mysql 事務(wù)處理及表鎖定深入簡析

    mysql 事務(wù)處理及表鎖定深入簡析

    本文將詳細(xì)介紹mysql 事務(wù)處理及表鎖定,需要了解更多的朋友可以參考下
    2012-11-11
  • linux下多個mysql5.7.19(tar.gz)安裝圖文教程

    linux下多個mysql5.7.19(tar.gz)安裝圖文教程

    這篇文章主要為大家詳細(xì)介紹了linux下多個mysql5.7.19tar.gz安裝教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • MySQL事務(wù)與隔離級別的使用基礎(chǔ)理論

    MySQL事務(wù)與隔離級別的使用基礎(chǔ)理論

    這篇文章主要介紹了MySQL事務(wù)的隔離級別詳情,事務(wù)隔離級別越高,為避免沖突所花費的性能也就越多,即效率低。在“可重復(fù)讀”級別,實際上可以解決部分的虛讀問題,但是不能防止update更新產(chǎn)生的虛讀問題,要禁止虛讀產(chǎn)生,還是需要設(shè)置串行化隔離級別
    2023-02-02
  • mysql5.7.21安裝配置教程

    mysql5.7.21安裝配置教程

    這篇文章主要為大家詳細(xì)介紹了mysql5.7.21安裝配置教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • MySQL鎖等待與死鎖問題分析

    MySQL鎖等待與死鎖問題分析

    這篇文章主要介紹了MySQL鎖等待與死鎖問題分析,幫助大家更好的理解和學(xué)習(xí)使用MySQL,感興趣的朋友可以了解下
    2021-03-03

最新評論