jQery的事件倒槐、事件對象以及事件委托

jQuery封裝了大量的javascript事件,方便了開發(fā)人員的使用附井。這樣規(guī)范了代碼讨越,使得我們的日常開發(fā)變得簡單而方便,我們只需要了解其基本的操作方法以及實現原理永毅,下面我來給大家介紹一下jQuery的事件是如何使用把跨。

在jQuery中的事件,我簡單分為以下幾種類型:

●事件綁定與取消

√ ?on() - 規(guī)定向被選元素添加的一個或多個事件處理程序沼死。

// 給按鈕綁定事件

// 可以通過群組選擇器選出多個元素着逐,并且可以同時添加事件

// 可以同時給元素綁定多個事件,只需要在on()的第一個參數的位置添加事件類型意蛀,中間使用空格分隔耸别,即可

$('#btn1, #btn2').on('click mouseover mouseout', function (e) {

// 使用on()方式綁定的事件的回調中,內部的this為觸發(fā)該方法的原生DOM對象县钥。

// 如果需要使用秀姐,建議轉為JQ元素,后續(xù)使用JQ方法

var $this = $(this);

$this.html('button');

// 每次函數被調用若贮,都會產生一個事件對象省有,就是函數的參數e,并且JQ已經出了兼容的問題

// 通過e.type就可以獲取事件類型

console.log(e.type);

console.log(e);

});

還有一點需要注意的是:如果給一個人按鈕綁定多個事件的時候谴麦,可以給on()方法傳遞一個對象蠢沿,方法類型和對應的函數以健值的方式傳入

$('#btn1').on({

'click': function () {

console.log('click');

},

'mouseover': function () {

console.log('mouseover');

}

});

我們會覺得這樣給元素綁定事件在書寫方面有點麻煩,而且代碼量也不少匾效,所以我們有更為簡潔的寫法來進行事件的綁定搏予,代碼如下:

$('#btn1').click(function () {

console.log('click');

});

$('#btn2').mouseout(function () {

console.log('dblclick');

});

√ ?off() - 移除指定元素添加的一個或多個事件處理程序。

$('#btn1, #btn2').off('mouseover mouseout');

√ ?one() - 為被選元素附加一個只執(zhí)行一次的事件處理程序弧轧。 ?

$('#btn3').one('click', function () {

console.log(this);

});

√ ?load() - 當指定的元素(及子元素)已加載時雪侥,會發(fā)生 load() 事件碗殷。

通常我們在寫js代碼時候會在js代碼外面加一個這樣的函數(表示將頁面的文檔加載完之后再執(zhí)行)

$(document).ready(function(){

}); ? ? ? ? ?//或者還有另外一種簡潔的寫法

$(function () {

});

√ ?hover() -復合事件,同時可綁定多個事件速缨,相當于mouseover和mouseout锌妻。

$('li').hover(function(){

$(this).css('background-color','blue');

},function(){

$(this).css('background-color','block');

});

●元素狀態(tài)的變化

blur() - 當元素失去焦點時發(fā)生 blur 事件。

change() - 當元素的值發(fā)生改變時旬牲,會發(fā)生 change 事件仿粹。

click() - 當點擊元素時,會發(fā)生 click 事件原茅。

dblclick() - 當雙擊元素時吭历,會發(fā)生 dblclick 事件。

focus() - 當元素獲得焦點時擂橘,發(fā)生 focus 事件晌区。

●元素外部狀態(tài)

resize() - 當調整瀏覽器窗口的大小時,發(fā)生 resize 事件通贞。

scroll() - 當用戶滾動指定的元素時朗若,會發(fā)生 scroll 事件。

select() - 文本被選擇時昌罩,會發(fā)生 select 事件哭懈。

submit() - 當提交表單時,會發(fā)生 submit 事件茎用。

特殊狀態(tài)觸發(fā)

error() - 當元素遇到錯誤(沒有正確載入)時遣总,發(fā)生 error 事件。

trigger() - 觸發(fā)被選元素的指定事件類型轨功。

triggerHandler() - 觸發(fā)被選元素的指定事件類型彤避。但不會執(zhí)行瀏覽器默認動作,也不會產生事件冒泡夯辖。

●鼠標鍵盤事件

keydown() - 當按鈕被按下時,發(fā)生 keydown 事件董饰。

keypress() - keypress 事件與 keydown 事件類似蒿褂。當按鈕被按下時,會發(fā)生該事件卒暂。它發(fā)生在當前獲得焦點的元素上啄栓。

keyup() - 當按鈕被松開時,發(fā)生 keyup 事件也祠。它發(fā)生在當前獲得焦點的元素上昙楚。

mousedown() - 當鼠標指針移動到元素上方,并按下鼠標按鍵時诈嘿,會發(fā)生 mousedown 事件堪旧。

mouseenter() - 當鼠標指針穿過元素時削葱,會發(fā)生 mouseenter 事件。

mouseleave() - 當鼠標指針離開元素時淳梦,會發(fā)生 mouseleave 事件析砸。

mousemove() - 當鼠標指針在指定的元素中移動時,就會發(fā)生 mousemove 事件爆袍。

mouseout() - 當鼠標指針從元素上移開時首繁,發(fā)生 mouseout 事件。

mouseover() - 當鼠標指針位于元素上方時陨囊,會發(fā)生 mouseover 事件弦疮。

mouseup() - 當在元素上放松鼠標按鈕時,會發(fā)生 mouseup 事件蜘醋。


●介紹完jQuery的一些常用時間后胁塞,我們來看一下jQuery的i事件對象

√ ?事件對象的獲取

$('div').click(function(event){ ? ? //觸發(fā)的函數中的參數,即為事件對象

console.log(event)

});

√? 事件對象的常用屬性

currentTarget ? ? ?實際觸發(fā)事件的對象

delegateTarget ? ? ?代理對象

pageX ? ?相對于文檔的X值

pageY ? ?相對于文檔的Y值

type ? 觸發(fā)方式

target ? ? 觸發(fā)事件的對象

√? 事件的冒泡以及默認行為的處理

stopPropagation()堂湖; ? 阻止事件冒泡

preventDefault()闲先; ? ?組織默認的事件

●接下來介紹一下jQuery的高級事件,也就是事件委托无蜂,下面我以一個小案例來為大家介紹

首先在頁面中寫出以下html代碼

設置簡單的樣式

我們要實現的效果是當你任意點擊一個li時伺糠,會在ul的最下方復制出一個你點擊的li

如果用原生js的寫法來實現的話,代碼如下:

/ 獲取所有l(wèi)i

var lis = document.querySelectorAll('li');

var click = function () {

// 創(chuàng)建新li

var newLi = document.createElement('li');

newLi.innerHTML = this.innerHTML;

newLi.onclick = click;

// 拼接

document.querySelector('ul').appendChild(newLi);

};

// 給所有l(wèi)i綁定事件

for (var i = 0; i < lis.length; i++) {

lis[i].onclick = click;

}

接下來我引入jQuery斥季,使用jq來進行實現效果训桶,代碼如下:

$('ul').on('click', 'li', function () { ??

// 使用on()的方式可以快速的添加事件代理(委托)

// 把事件綁定到父元素上面,on()第一個參數為事件類型酣倾,第二個參數為實際觸發(fā)的對象舵揭,第三個參數為回調函數

?// 先將this轉為JQ元素,然后克隆躁锡,然后拼接到ul最后面

$(this).clone().appendTo('ul');

});

jq的事件先介紹到這里午绳,如果對您有所幫助的話,請點贊并關注哦映之,我會不定時的更新一下自己學習的經驗以及見解拦焚,和大家進行交流。

您贊就是是我最大的動力8苁洹J臧堋!

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末蠢甲,一起剝皮案震驚了整個濱河市僵刮,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖搞糕,帶你破解...
    沈念sama閱讀 222,865評論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件勇吊,死亡現場離奇詭異,居然都是意外死亡寞宫,警方通過查閱死者的電腦和手機萧福,發(fā)現死者居然都...
    沈念sama閱讀 95,296評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來辈赋,“玉大人鲫忍,你說我怎么就攤上這事≡壳” “怎么了悟民?”我有些...
    開封第一講書人閱讀 169,631評論 0 364
  • 文/不壞的土叔 我叫張陵,是天一觀的道長篷就。 經常有香客問我射亏,道長,這世上最難降的妖魔是什么竭业? 我笑而不...
    開封第一講書人閱讀 60,199評論 1 300
  • 正文 為了忘掉前任智润,我火速辦了婚禮,結果婚禮上未辆,老公的妹妹穿的比我還像新娘窟绷。我一直安慰自己,他們只是感情好咐柜,可當我...
    茶點故事閱讀 69,196評論 6 398
  • 文/花漫 我一把揭開白布兼蜈。 她就那樣靜靜地躺著,像睡著了一般拙友。 火紅的嫁衣襯著肌膚如雪为狸。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,793評論 1 314
  • 那天遗契,我揣著相機與錄音辐棒,去河邊找鬼。 笑死牍蜂,一個胖子當著我的面吹牛漾根,可吹牛的內容都是我干的。 我是一名探鬼主播捷兰,決...
    沈念sama閱讀 41,221評論 3 423
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼负敏!你這毒婦竟也來了贡茅?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 40,174評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎顶考,沒想到半個月后赁还,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 46,699評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡驹沿,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,770評論 3 343
  • 正文 我和宋清朗相戀三年艘策,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片渊季。...
    茶點故事閱讀 40,918評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡朋蔫,死狀恐怖,靈堂內的尸體忽然破棺而出却汉,到底是詐尸還是另有隱情驯妄,我是刑警寧澤,帶...
    沈念sama閱讀 36,573評論 5 351
  • 正文 年R本政府宣布合砂,位于F島的核電站青扔,受9級特大地震影響,放射性物質發(fā)生泄漏翩伪。R本人自食惡果不足惜微猖,卻給世界環(huán)境...
    茶點故事閱讀 42,255評論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望缘屹。 院中可真熱鬧凛剥,春花似錦、人聲如沸囊颅。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,749評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽踢代。三九已至盲憎,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間胳挎,已是汗流浹背饼疙。 一陣腳步聲響...
    開封第一講書人閱讀 33,862評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留慕爬,地道東北人窑眯。 一個月前我還...
    沈念sama閱讀 49,364評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像医窿,于是被迫代替她去往敵國和親磅甩。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,926評論 2 361

推薦閱讀更多精彩內容

  • 總結: 鼠標事件 1.click與dbclick事件$ele.click()$ele.click(handler(...
    阿r阿r閱讀 1,616評論 2 10
  • (續(xù)jQuery基礎(1)) 第5章 DOM節(jié)點的復制與替換 (1)DOM拷貝clone() 克隆節(jié)點是DOM的常...
    凜0_0閱讀 1,348評論 0 8
  • 資料來源 w3cschool 1. jQuery名稱沖突 解決方法 var $jquery = jQuery.no...
    小人物的秘密花園閱讀 397評論 0 0
  • 繩索盤錯肉里 血管一樣 捆綁的手在一粒光里 舞動 破碎的玻璃 在頭上耀眼的奏響 蓮蓬頭流出 溫暖的音樂 紅酒瓶 ...
    爾東一土閱讀 274評論 10 16
  • 1.讀書的質量要有保證渣聚,認真閱讀比馬虎速度強。 現在慢慢的感受到了僧叉,讀書認真的做筆記奕枝,反思,然后對自己的幫助非常的...
    可可兒媽閱讀 126評論 0 0