事件綁定,以及事件冒泡,事件捕獲

當我們想去操作html文檔中的某個元素,使其發生某種變化時,這都少不了事件綁定。

今天主要想寫一下最基本的一些用法和注意點。

第一,事件綁定

(1)在元素的標簽中,使用 on+事件名的方法。此種方法簡單,也不存在什么兼容問題,但是沒有實現代碼分離,且只能綁定一個函數。


1.1在html中

(2)第二種方法與第一種方法類似,只是事件綁定放到了js中。這實現了代碼分離,也很簡單。但是功能較弱,也只能實現一個函數的綁定。


1.2 在js中使用.on事件名的方法

(3)添加事件監聽

這種方法,addEventListener可以同時綁定多個函數,在W3C標準下,為先綁定先執行。此外,此方法還有其它優點,可以在第三個參數下,指定是在事件冒泡時執行,還是事件捕捉時執行。此外,第二個參數,如果我們直接寫一個函數,在函數中傳入事件(e),我們可以直接捕捉到觸發事件。最后還有一個注意點,就是函數體中的this,是添加事件監聽前的元素。

這種方法優點這么多,所以我們自然優先選擇這種方法,但是要注意,IE 不支持,要使用attachEvent.

1.3 addEventListener

第二 jQuery中的事件綁定

由于jQuery的使用頻度較高,這里簡略提一下jQuery中我們常用的事件綁定方法。

(1)$(選擇器).bind(事件類型,[data],function(){});?

(2) 可以將上述簡寫成,$(選擇器).事件(function(){});?

eg. ?a.click(function(){ alert("a is clicked");});

(3)使用on.?

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

這里有較為詳細一些的,關于jQuery中的事件綁定 http://www.51edu.com/it/bckf/35687.html

第三,事件冒泡,事件捕獲以及應用。

1)冒泡事件

冒泡事件如其名字,是從一個具體的元素的事件的觸發,逐漸擴散到最不具體的事件目標(document)。我們最常用的一個應用,就是如果多個元素需要觸發相同事件,或者動態添加某些元素導致無法綁定事件時,可以將事件觸發綁定到父元素上,這樣在子元素上的事件也會使父元素觸發相應函數,這就叫做事件委托。

2)事件捕獲

定義與事件冒泡相反,就是從最不具體的事件逐級捕獲到最具體的事件。

3) 事件流

DOM事件流:同時支持兩種事件模型:捕獲型事件和冒泡型事件,但是,捕獲型事件先發生。兩種事件流會觸及DOM中的所有對象,從document對象開始,也在document對象結束。在addEventListener中,將第三個參數設置為false,則是在冒泡事件中執行。這與IE默認的事件模型一致。




參考文章:

事件綁定:

http://www.cnblogs.com/ninofocus/archive/2012/11/07/2758772.html

http://www.itxueyuan.org/view/6338.html

冒泡及事件流:http://www.jb51.net/article/42492.htm

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • (續jQuery基礎(1)) 第5章 DOM節點的復制與替換 (1)DOM拷貝clone() 克隆節點是DOM的常...
    凜0_0閱讀 1,370評論 0 8
  • 背景知識 什么是事件?直觀的說就是網頁上發生的事情,大部分是指用戶的鼠標動作和鍵盤動作,如點擊、移動鼠標、按下某個...
    吧啦啦小湯圓閱讀 1,883評論 2 15
  • 總結: 鼠標事件 1.click與dbclick事件$ele.click()$ele.click(handler(...
    阿r阿r閱讀 1,640評論 2 10
  • 第1章 鼠標事件 1-1 jQuery鼠標事件之click與dbclick事件 用交互操作中,最簡單直接的操作就是...
    mo默22閱讀 1,308評論 0 6
  • 人生得失。榮譽與失敗都是一生中應該所經歷的東西。寵辱不驚,笑看云卷云舒。 ...
    芾崳閱讀 451評論 0 0