在jquery中,綁定事件的意思是將普通的時間event綁定在DOM節點上,當DOM節點被選中時,將事件與之綁定,方便用戶提供相應的操作;jquery中有bind、live、delegate和on四種方法來綁定事件,其中live方法已經被移除,建議使用on來綁定事件。
本教程操作環境:windows10系統、jquery3.6.0版本、Dell G3電腦。
jquery 綁定事件是什么意思
事件綁定:將普通的事件event綁定在DOM節點上,當DOM節點被選中時,將事件與之綁定,方便用戶提供相應的操作。
比如:在button按鈕上綁定click鼠標事件,在input中綁定focusin焦點事件等等,具體的例如:常常在代碼中這樣寫$('.bn1').click(function(){…})就是普通的事件綁定。
擴展:
事件委托:是指在事件綁定的基礎上補充與擴展事件綁定,具體就是指:通過子節點元素綁定事件來傳遞給父元素DOM節點(祖先節點)來統一管理其全部后代子元素。
這樣遇到需要綁定很多事件的子元素時,就避免了很多麻煩重復綁定事件的工作,提供了訪問效率。具體代碼$('.div').on('click','.bn2',function(){…})
jquery有四種綁定事件的方式。bind,live,delegate,on。其中live已被移除,bind和delegate底層都是on實現的。
jquery建議我們使用on來綁定事件。除原生事件外,jquery支持綁定自定義事件。
最常用方法
$(“選擇器”).事件名稱(匿名函數)
舉例1:
//這里的button為元素選擇器,click為鼠標點擊事件$("button").click(function(){ //函數內容 })
舉例2:
//這里的#btn1為id選擇器即id名為btn1的元素,mouseenter為鼠標聚焦事件$("#btn1").mouseenter(function(){ //函數內容 })
舉例3:
//這里的.ps為類選擇器即class名為ps的所有元素,mouseleave為鼠標離焦事件$(".ps").mouseleave(function(){ //函數內容 })
bind函數
$(“選擇器”).bind({“事件名稱”:匿名函數})
舉例1:
//button為元素選擇器,bind的中文意思為‘綁定’$("button").bind({"click":function(){ //函數內容 }})
舉例2:
//這里的#btn1為id選擇器即id名為btn1的元素,mouseenter為鼠標聚焦事件$("#btn1").bind({"mouseenter":function(){ //函數內容 }})
舉例3:
//這里的.ps為類選擇器即class名為ps的所有元素,mouseleave為鼠標離焦事件$(".ps").bind({"mouseleave":function(){ //函數內容 }})
注
:這里的bind函數參數為一個大括號
包裹的字典,key值為雙引號下的事件名稱,value值為函數內容,一定一定一定
要注意格式。
on函數
兩個形參
$(“選擇器”).on(“事件名稱”,匿名函數)
舉例:
$("button").on("click",function(){ //函數內容 })
注
:含有兩個形參的on函數,和bind函數使用方法類似,只是格式不同,可以一起記憶。
三個形參
含有三個參數,非常適合含有多個孩子的父節點使用,可以統一控制孩子節點事件
$(“父節點選擇器”).on(“事件名稱”,“孩子節點,即要綁定的元素”,匿名函數)
舉例:
$("ul").on("click","li",function(){ $(this).css("color","blue"); //this表明當前點中的對象,此語句表明,當點擊li標簽時候,將該li標簽顏色變為blue })
注
:一定要注意含有三個參數的使用場景,并且注意this關鍵字的使用
delegate函數
delegate函數有三個形參,和on函數有著相似之處,區別是參數位置不同。
$(“父節點選擇器”).delegate(“孩子節點,即要綁定的元素”,“事件名稱”,匿名函數)
$("ul").delegate("li","click",function(){ $(this).css("color","blue"); })
注
:一定要注意這里的參數排列順序和on函數的參數排列順序不同。
總結
- 縱觀上面的綁定事件,可以發現,不同的綁定事件只是換了一個關鍵字以及相對應的參數列表;
- 它們共有的都是
$("選擇器").函數名(參數列表)
;參數列表內容無外乎為事件名稱,和匿名函數,或者是子節點選擇器, - 這里的匿名函數,實際上就是一個存放代碼體的地址,相當于參數是一個地址,只是為了減少代碼量,直接將函數地址用匿名函數的形式代替了。
模板 | |
---|---|
最常用 | $(“選擇器”).事件名稱(匿名函數) |
bind函數 | $(“選擇器”).bind({“事件名稱”:匿名函數}) |
on函數 | $(“選擇器”).on(“事件名稱”,匿名函數) |
$(“父節點選擇器”).on(“事件名稱”,“孩子節點,即要綁定的元素”,匿名函數) | |
delegate函數 | $(“父節點選擇器”).delegate(“孩子節點,即要綁定的元素”,“事件名稱”,匿名函數) |
視頻教程推薦:jQuery視頻教程