1. 程式人生 > >事件on和onclick 兩者之間的區別

事件on和onclick 兩者之間的區別

定義和用法

on() 方法在被選元素及子元素上新增一個或多個事件處理程式。

自 jQuery 版本 1.7 起,on() 方法是 bind()、live() 和 delegate() 方法的新的替代品。該方法給 API 帶來很多便利,我們推薦使用該方法,它簡化了 jQuery 程式碼庫。

注意:使用 on() 方法新增的事件處理程式適用於當前及未來的元素(比如由指令碼建立的新元素)。

提示:如需移除事件處理程式,請使用 off() 方法。

提示:如需新增只執行一次的事件然後移除,請使用 one() 方法。

on() 和 click() 的區別:

二者在繫結靜態控制元件時沒有區別,但是如果面對動態產生的控制元件,只有 on() 能成功的繫結到動態控制元件中。

以下例項中原先的 HTML 元素點選其身後的 Delete 按鈕就會被刪除。而動態新增的 HTML 元素,使用 click() 這種寫法,點選 Delete 按鈕無法刪除;使用 On() 方式可以。

點選事件on和onclick 兩者之間的區別(很重要)
第1種事件 
$('.XX').click('.xxx',function() { alert('xxx') }); 
第2種事件 
$('.XXX').on('click','.xxx', function() { alert('xxx') })
click是點選事件,但是在頁面載入完之後,jquery事件新新增的元素,用click的話是無法獲取元素的,這個時候要用on去獲取元素事件,簡單的說頁面載入完成時候頁面顯示的元素可以用on,也可以用click,但是頁面載入完成之後後期再追加的元素只能用on。

這兩個事件的區別之處在於: 
簡單的說頁面載入完成時候頁面顯示的元素(DOM節點已全部載入完)可以用 on , 也可以用click ,

但是在頁面載入完成之後後期再追加元素(DOM節點元素還沒完全顯示出來)只能用on

解釋一下:

$('.AAA').on('click','.bbb', function() { alert('bbb') }) 

獲取class 為bbb元素的上一級(或父級)元素,選擇click的方式,執行回撥函式function ()並執行彈出元素bbb,這裡的on,元素bbb如果沒全部加載出來。沒有直接獲取到class為bbb的元素,這個時候它就會去找上一級(或父級)的元素,然後在從上一級(或父級)往下接著再執行,就會找到class為bbb的元素了,就觸發了點選事件,並執行事件裡面的函式啦 ~

$("p").on("click",function(){
alert("段落被點選了。");
});