日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

jQuery 事件用法详解

發(fā)布時間:2025/5/22 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 jQuery 事件用法详解 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

目錄

簡介

實現(xiàn)原理

事件操作

綁定事件

解除事件

觸發(fā)事件

事件委托

事件操作進(jìn)階

阻止默認(rèn)事件

阻止事件傳播

阻止事件向后執(zhí)行

命名空間

自定義事件

事件隊列

jquery中文文檔

簡介

jquery?之所以成為最受歡迎的前端庫,很大一部分是得益于它的事件具有良好的語義,優(yōu)秀的兼容性,并且便于管理和擴(kuò)展。

在這里我會介紹?jquery?事件的一些比較基礎(chǔ)的用法。

實現(xiàn)原理

jquery?事件脫胎于瀏覽器的?addEventListener (W3)?和?attachEvent (IE)?方法 , 提供了跨瀏覽器的一致性API。具體的實現(xiàn)原理可以參考Aaron的系列文章
jquery源碼分析-事件。

事件操作

綁定事件

jquery?中實現(xiàn)事件綁定有多種方式,其中?$(selector).event(func)?方式中?event?支持一系列的瀏覽器事件,文檔加載事件,表單事件,鍵盤事件和鼠標(biāo)事件,但并非全部。

// 常用的寫法$('body').click(function(){ }) $('body').on('click',function(){ }) $('body').one('click',function(){ }) // 只會執(zhí)行一次,然后銷毀事件 // 其他寫法(不推薦) $('body').bind('click',function(){ }) $('body').delegate('p','click',function(){ })

on.('click')?和?.click()?的區(qū)別

on?屬于?綁定事件處理器(event-handler-attachment) , 而?.click()?屬于?jquery包裝好的鼠標(biāo)事件。

on?可以綁定dom和bom的既有事件,也可以綁定自定義的事件。所以推薦始終只使用$(selector).on(event,func)?的方式,彈性的綁定更多的事件:

$(document).hashchange(function(){ }) => 報錯,jquery沒有提供此事件處理器 $(document).on('hashchange',function(){ }) => 綁定事件成功

也可以同時綁定多個事件處理同一事務(wù):

$('input').on('focus input',function(){ }) => 在文本框聚焦和輸入的時候,都做同樣的事情

解除事件

在不需要再繼續(xù)監(jiān)聽事件執(zhí)行的時候,就需要解除事件了,根據(jù)綁定事件方式的不同,解除事件也有好幾種方式,推薦始終使用$(selector).off(event)?的方式解除事件綁定,因為?on/off?正好構(gòu)成了一個開關(guān)。

$('body').off('click') => 可以解除 $.click(func),$.on('click',func) 和 $.bind('click',func) 綁定的事件, 不能解除delegate方式綁定的事件 $('body').unbind('click') => 同上 $('body').undelegate('p','click') => 只能解除 delegate方式綁定的事件

觸發(fā)事件

在?jquery?中,有許多方法根據(jù)其參數(shù)個數(shù)的不同,既可以是賦值,也可以做為取值操作。
事件也不例外,許多時候可以利用這個特性,代替手動去觸發(fā)一些事件,以下示例中的兩種方式,都可以實現(xiàn)自動觸發(fā)事件。

// (當(dāng)表單字段未通過驗證時) 自動選中文本值 $('input').select() $('input').trigger('select') // 觸發(fā)已有的點擊事件 $(selector).click() $(selector).trigger('click') // 通過觸發(fā)事件,通知select2插件重新渲染 $('select').change() $('select').trigger('change')

事件委托

事件委托通過事件從目標(biāo)元素冒泡到根元素的原理實現(xiàn),它有2個好處,一是大幅降低事件綁定的內(nèi)存占用,二是可以對后來加入的元素生效。

// 寫法 $(selector).on(event, selector2, func) // 不推薦的方法 $(selector).delagate(selector2, event, func)

事件委托原理及性能分析詳見?解密jQuery事件核心 - 委托設(shè)計(二)

事件操作進(jìn)階

上面列舉了一些簡單的事件綁定,解綁和委托的使用,下面會說到一些更加個性化的用法。

阻止默認(rèn)事件

event.preventDefault()?這個方法用于阻止瀏覽器的默認(rèn)行為,通常用于表單提交或是頁面滾動。

$('form').on('submit',function(event){ // 阻止了默認(rèn)的表單提交事件,下面可以做一些愛做的事情了 event.preventDefault(); }) $(document).on('touchmove',function(event){ // 阻止了瀏覽器的默認(rèn)滾動,也可以做些愛做的事情了 event.preventDefault(); })

阻止事件傳播

阻止事件傳播即阻止事件繼續(xù)向上冒泡。

// 點擊div時,會依次alert 2 ,1 $('body').on('click',function(){alert(1)}) $('div').on('click',function(){alert(2)}) // 下面的代碼只會alert一個 2,因為事件停止冒泡了,不會被body監(jiān)聽到 $('body').on('click',function(){alert(1)}) $('div').on('click',function(event){ event.stopPropagation(); alert(2) })

阻止事件向后執(zhí)行

除了阻止默認(rèn)的事件,停止向上冒泡之外,有時還需要禁止后續(xù)的事件執(zhí)行,可以使用?event.stopImmediatePropagation()?方法。該方法會自動調(diào)用?event.stopPropagation()?方法。

// 不使用 event.stopImmediatePropagation() 將會alert 2,3,4,1 // 加上之后只會alert 2 $('body').on('click',function(){alert(1)}) $('div').on('click',function(event){ event.stopImmediatePropagation(); alert(2) }) $('div').on('click',function(){ alert(3) }) $('div').on('click',function(){ alert(4) })

命名空間

想要更精準(zhǔn)的控制事件,很多時候還需要利用?jquery?的命名空間機(jī)制。

$('div').on('click.click1',function(){console.log(1)}) $('input').on('click.click1',function(){console.log(11)}) $('div').on('click.click2',function(){console.log(2)}) $('input').on('click.click2',function(){console.log(21)}) // 只觸發(fā)click2事件 $('div,input').trigger('.click2') // 解除click1事件,click2任然會執(zhí)行 $('div,input').off('.click1')

自定義事件

把多個事件組合起來,或者在特定條件下觸發(fā)事件,普通的事件綁定是無法滿足需要的,可以通過自定義事件來形成?pub-sub?組合。
比如監(jiān)聽?短信驗證碼發(fā)送倒計時

// 偽代碼setInterVal(function(){ time--; if(time < 1){ $('.js-timeless-button').trigger('time-end', params0, params1); } },1000) // 自定義事件回調(diào)函數(shù)默認(rèn)第一個參數(shù)為event對象,以后的參數(shù)依次是傳入的參數(shù) $('.js-timeless-button').on('time-end',function(event, params0, params1){ });

或者是?頁面滾動到了底部

// 偽代碼$(window).on('scroll',function(){ if((($(window).scrollTop() + $(window).height())) >= $(document).height()){ $(document).trigger('infinite', params0, params1); } }) $(document).on('infinite',function(event, params0, params1){ });

解除自定義事件和解除其他事件的方式相同。可以通過?off?或者?unbind?進(jìn)行。

事件隊列

在?jquery?中,事件是按照其綁定順序依次執(zhí)行的。如果想要調(diào)整執(zhí)行順序,或是禁止之前綁定的方法發(fā)生,可以通過重寫事件隊列的方式。

查看某個dom上已綁定事件的方法是
$._data(elem,'events')?(jquery版本>1.7)。

elem?是?dom對象?而非?jquery對象?。

function alertBottle(){ $("body").on('click',function() { alert("1") }); $("body").on('click',function() { alert("2") }); $("body").on('click',function() { alert("3") }); } // 點擊body會依次alert 1, 2, 3 alertBottle(); // 倒序執(zhí)行 alertBottle(); var Events = $._data($("body").get(0),'events'); Events.click.sort(function(a,b){return b.guid-a.guid }) // 禁止執(zhí)行之前的一切, 只執(zhí)行我 alertBottle(); var Events = $._data($("body").get(0),'events'); Events.click = null; $("body").on('click',function() { alert("4") }); // 最先執(zhí)行我 alert 4, 1, 2, 3 alertBottle(); $("body").on('click',function() { alert("4") }); var Events = $._data($("body").get(0),'events'); var last = Events.click.pop(); Events.click.unshift(last);

兼容jquery低版本的寫法是:

$.fn.getEvents = function() {if (typeof(jQuery._data) == 'function') { return jQuery._data(this.get(0), 'events') || {}; } else if (typeof(this.data) == 'function') { // jQuery version < 1.7.? return this.data('events') || {}; } return {}; }; // 使用 $("body").getEvents();
轉(zhuǎn)自http://www.cnblogs.com/lewo/p/jquery-event.html

轉(zhuǎn)載于:https://www.cnblogs.com/wenJiaQi/p/6371617.html

總結(jié)

以上是生活随笔為你收集整理的jQuery 事件用法详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日韩爽爽视频 | 成人免费在线网址 | 91无毒不卡 | 深夜福利在线免费观看 | 免费看黄色的视频 | 黑人精品无码一区二区三区AV | 亚洲午夜一区 | 欧美亚洲天堂 | 国产一区二区三区视频在线 | 欧美伊人影院 | 亚洲高清视频网站 | 亚洲天堂av免费在线观看 | 毛片国产精品 | 亚洲社区在线 | 午夜精品久久久久久99热 | 国产色婷婷一区二区三区竹菊影视 | 久久精品国产亚洲av高清色欲 | 中国久久 | 51精产品一区一区三区 | 国产剧情演绎av | 午夜免费在线观看 | av调教 | 依人99 | 亚洲综合在线一区二区 | 亚洲精品乱码久久久久久蜜桃91 | 国产一区二区三区在线免费观看 | 国产精品青青草 | 依人成人网| 亚洲AV无码国产精品国产剧情 | 五月深爱婷婷 | 亚洲av成人精品日韩在线播放 | 最新黄色网页 | 刘亦菲一区二区三区免费看 | 亚洲熟妇毛茸茸 | 日韩有码视频在线 | 伊人精品在线观看 | 777精品久无码人妻蜜桃 | 亚洲精品视频在线播放 | 人人草人人看 | www午夜视频| 中文字幕人妻一区二区三区视频 | 国产视频手机在线观看 | 黄色片hd | 四虎永久免费在线观看 | 99爱免费 | 精品国产九九九 | www.日韩在线 | 国产在线综合视频 | 91网在线 | 在线观看中文字幕第一页 | 日本色综合| 国产伦精品一区二区三区在线观看 | 亚洲视频图片 | 亚洲精品在线不卡 | 天天综合中文字幕 | 91毛片观看 | 亚洲视频天天射 | 日韩激情小说 | 午夜一区二区三区在线 | 操你啦在线视频 | 草在线| www.夜夜夜 | 99久久久无码国产精品不卡 | 黄色大全免费观看 | 果冻传媒av| 亚洲精品在线网站 | 好吊视频一区二区三区四区 | 国产乱淫av免费 | 天堂а在线中文在线新版 | 国产成人精品视频 | 精品夜夜澡人妻无码av | 亚洲国产精一区二区三区性色 | 国产aⅴ精品一区二区三区久久 | 亚洲手机视频 | 美女扒开腿让男生桶 | 91亚洲国产 | 久久久久玖玖 | 中文字幕电影av | 久久久久99精品国产片 | 色人阁av| 日本两性视频 | 高清日韩 | 免费一级特黄毛大片 | 久草精品在线观看视频 | 足疗店女技师按摩毛片 | av在线播放一区二区三区 | 国产精品99久久 | 欧美亚洲第一区 | 国产麻豆91视频 | 国产av无码专区亚洲精品 | 日韩免费一二三区 | 天天干夜夜添 | 免费av在| 最新av导航 | av成人在线免费观看 | 久草视频在线播放 | 少妇2做爰交换朴银狐 | 国产一区在线免费观看 | 91色视频在线观看 |