日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > HTML >内容正文

HTML

前端基础-jQuery的事件的用法

發布時間:2025/3/21 HTML 53 豆豆
生活随笔 收集整理的這篇文章主要介紹了 前端基础-jQuery的事件的用法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

閱讀目錄

  • 常用事件
  • 事件綁定
  • 移除事件
  • 頁面載入
  • 一、常用事件

    1、鼠標事件之click事件

    用交互操作中,最簡單直接的操作就是點擊操作。jQuery提供了兩個方法一個是click方法用于監聽用戶單擊操作,另一個方法是dbclick方法用于監聽用戶雙擊操作。

    這兩個方法的用法是類似的,下面以click()事件為例

    使用上非常簡單:

    方法一:$ele.click()

    綁定$ele元素,不帶任何參數一般是用來指定觸發一個事件,用的比較少

    <div id="test">點擊觸發<div> $("ele").click(function(){alert('觸發指定事件') }) $("#test").click(function(){$("ele").click() //手動指定觸發事件 });

    方法二:$ele.click( handler(eventObject) )

    綁定$ele元素,每次$ele元素觸發點擊操作會執行回調?handler函數,這樣可以針對事件的反饋做很多操作了,方法中的this是指向了綁定事件的元素

    <div id="test">點擊觸發<div> $("#test").click(function() {//this指向 div元素 });

    方法三:$ele.click( [eventData ], handler(eventObject) )

    使用與方法二一致,不過可以接受一個數據參數,這樣的處理是為了解決不同作用域下數據傳遞的問題

    <div id="test">點擊觸發<div> $("#test").click(11111,function(e) {//this指向 div元素//e.data => 11111 傳遞數據 });

    2、鍵盤事件之keydown()與keyup()事件

    鼠標有mousedown,mouseup之類的事件,這是根據人的手勢動作分解的2個觸發行為。相對應的鍵盤也有這類事件,將用戶行為分解成2個動作,

    鍵盤按下與松手,針對這樣的2種動作,jQuery分別提供了對應keydown與keyup方法來監聽

    keydown事件:

    當用戶在一個元素上第一次按下鍵盤上字母鍵的時候,就會觸發它。使用上非常簡單,與基本事件參數處理保持一致,這里使用不在重復了,列出使用的方法

    //直接綁定事件 $elem.keydown( handler(eventObject) ) //傳遞參數 $elem.keydown( [eventData ], handler(eventObject) ) //手動觸發已綁定的事件 $elem.keydown()

    keyup事件:

    當用戶在一個元素上第一次松手鍵盤上的鍵的時候,就會觸發它。使用方法與keydown是一致的只是觸發的條件是方法的

    注意:

  • keydown是在鍵盤按下就會觸發
  • keyup是在鍵盤松手就會觸發
  • 理論上它可以綁定到任何元素,但keydown/keyup事件只是發送到具有焦點的元素上,不同的瀏覽器中,可獲得焦點的元素略有不同,
  • 但是表單元素總是能獲取焦點,所以對于此事件類型表單元素是最合適的。
  • <h2>keydown()與keyup()事件</h2><div class="left"><h4>測試一</h4><div class="aaron">監聽keydown輸入:<input class="target1" type="text" value="" /><br />按下顯示輸入的值:<em></em></div><h4>測試二</h4><div class="aaron">監聽keyup輸入:<input class="target2" type="text" value="" /><br />松手顯示輸入的值:<em></em></div></div><script type="text/javascript">//監聽鍵盤按鍵//獲取輸入的值$('.target1').keydown(function(e) {$("em:first").text(e.target.value)});//監聽鍵盤按鍵//獲取輸入的值$('.target2').keyup(function(e) {$("em:last").text(e.target.value)});</script> 實例

    3、鼠標事件之hover事件

    jQuery直接提供了一個hover方法,可以便捷處理。只需要在hover方法中傳遞2個回調函數就可以了,不需要顯示的綁定2個事件

    $(selector).hover(handlerIn, handlerOut)
    • handlerIn(eventObject):當鼠標指針進入元素時觸發執行的事件函數
    • handlerOut(eventObject):當鼠標指針離開元素時觸發執行的事件函數
    !DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><meta http-equiv="x-ua-compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1"><title>hover示例</title><style>* {margin: 0;padding: 0;}.nav {height: 40px;width: 100%;background-color: #3d3d3d;position: fixed;top: 0;}.nav ul {list-style-type: none;line-height: 40px;}.nav li {float: left;padding: 0 10px;color: #999999;position: relative;}.nav li:hover {background-color: #0f0f0f;color: white;}.clearfix:after {content: "";display: block;clear: both;}.son {position: absolute;top: 40px;right: 0;height: 50px;width: 100px;background-color: #00a9ff;display: none;}.hover .son {display: block;}</style> </head> <body> <div class="nav"><ul class="clearfix"><li>登錄</li><li>注冊</li><li>購物車<p class="son hide">空空如也...</p></li></ul> </div> <script src="jquery-3.3.1.min.js"></script> <script> $(".nav li").hover(function () {$(this).addClass("hover");},function () {$(this).removeClass("hover");} ); </script> </body> </html> 實例

    4、鼠標事件之focusin事件

    當一個元素,或者其內部任何一個元素獲得焦點的時候,例如:input元素,用戶在點擊聚焦的時候,

    如果開發者需要捕獲這個動作的時候,jQuery提供了一個focusin事件

    使用上非常簡單:

    方法一:$ele.focusin()

    綁定$ele元素,不帶任何參數一般是用來指定觸發一個事件,一般用的比較少

    <div id="test">點擊觸發<div> $("ele").focusin(function(){alert('觸發指定事件') });

    方法二:$ele.focusin( handler )

    綁定$ele元素,每次$ele元素觸發點擊操作會執行回調?handler函數

    這樣可以針對事件的反饋做很多操作了

    <div id="test">點擊觸發<div> $("#test").focusin(function() {//this指向 div元素 });

    方法三:$ele.focusin( [eventData ], handler )

    使用與方法二一致,不過可以接受一個數據參數,這樣的處理是為了解決不同作用域下數據傳遞的問題

    <div id="test">點擊觸發<div> $("#test").focusin(11111,function(e) {//this指向 div元素//e.data => 11111 傳遞數據 });<h2>.focusin()方法</h2><div class="left"><div class="aaron">點擊聚焦:<input type="text" /></div></div><div class="right"><div class="aaron1">點擊聚焦并傳遞參數:<input type="text" /></div></div><script type="text/javascript">//input聚焦//給input元素增加一個邊框$("input:first").focusin(function() {$(this).css('border','2px solid red')})</script><script type="text/javascript">//不同函數傳遞數據function fn(e) {$(this).val(e.data)}function a() {$("input:last").focusin('網', fn)}a();</script> 實例

    4、鼠標事件之focusout事件

    當一個元素,或者其內部任何一個元素失去焦點的時候,比如input元素,用戶在點擊失去焦的時候,如果開發者需要捕獲這個動作,

    jQuery提供了一個focusout事件

    使用上非常簡單:

    方法一:$ele.focusout()

    綁定$ele元素,不帶任何參數一般是用來指定觸發一個事件,可能一般用的比較少

    <div id="test">點擊觸發<div> $("ele").focusout(function(){alert('觸發指定事件') });

    方法二:$ele.focusout( handler )

    綁定$ele元素,每次$ele元素觸發點擊操作會執行回調?handler函數

    這樣可以針對事件的反饋做很多操作了

    <div id="test">點擊觸發<div> $("#test").focusout(function() {//this指向 div元素 });

    方法三:$ele.focusout( [eventData ], handler )

    使用與方法二一致,不過可以接受一個數據參數,這樣的處理是為了解決不同作用域下數據傳遞的問題

    <div id="test">點擊觸發<div> $("#test").focusout(11111,function(e) {//this指向 div元素//e.data => 11111 傳遞數據 });<h2>.focusout()方法</h2><div class="left"><div class="aaron">點擊觸發失去焦點:<input type="text" /></div></div><div class="right"><div class="aaron1">點擊觸發失去焦點并傳遞參數:<input type="text" /></div></div><script type="text/javascript">//input失去焦點//給input元素增加一個邊框$("input:first").focusout(function() {$(this).css('border','2px solid red')})</script><script type="text/javascript">//不同函數傳遞數據function fn(e) {$(this).val(e.data)}function a() {$("input:last").focusout('網', fn)}a();</script> 實例

    5、表單事件之blur與focus事件

    我們學過了表單處理事件focusin事件與focusout事件,同樣用于處理表單焦點的事件還有blur與focus事件

    6、表單事件之change事件

    <input>元素,<textarea>和<select>元素的值都是可以發生改變的,開發者可以通過change事件去監聽這些改變的動作

    input元素

    監聽value值的變化,當有改變時,失去焦點后觸發change事件。對于單選按鈕和復選框,當用戶用鼠標做出選擇時,該事件立即觸發。

    select元素

    對于下拉選擇框,當用戶用鼠標作出選擇時,該事件立即觸發

    textarea元素

    多行文本輸入框,當有改變時,失去焦點后觸發change事件

    change事件很簡單,無非就是注意下觸發的先后行為

    <h2>input、textarea與select</h2><div class="left"><div class="aaron">input:<input class="target1" type="text" value="監聽input的改變" /></div><div class="aaron1">select:<select class="target2"><option value="option1" selected="selected">Option 1</option><option value="option2">Option 2</option></select></div><div class="aaron3">textarea:<textarea class="target2" rows="3" cols="20">多行的文本輸入控件</textarea></div></div> 輸出結果:<div id="result"></div><script type="text/javascript">//監聽input值的改變$('.target1').change(function(e) {$("#result").html(e.target.value)});//監聽select:$(".target2").change(function(e) {$("#result").html(e.target.value)})//監聽textarea:$(".target3").change(function(e) {$("#result").html(e.target.value)})</script> 實例

    7、表單事件之select事件

    當 textarea 或文本類型的 input 元素中的文本被選擇時,會發生 select 事件。
    這個函數會調用執行綁定到select事件的所有函數,包括瀏覽器的默認行為。可以通過在某個綁定的函數中返回false來防止觸發瀏覽器的默認行為。

    select事件只能用于<input>元素與<textarea>元素

    使用上非常簡單:

    方法一:.select()

    觸發元素的select事件:

    $("input").select();

    方法二:$ele.select( handler(eventObject) )

    綁定$ele元素,每次$ele元素觸發點擊操作會執行回調?handler函數

    這樣可以針對事件的反饋做很多操作了

    <input id="test" value="文字選中"></input> $("#test").select(function() { //響應文字選中回調//this指向 input元素 });

    方法三:$ele.select( [eventData ], handler(eventObject) )

    使用與方法二一致,不過可以接受一個數據參數,這樣的處理是為了解決不同作用域下數據傳遞的問題

    <input id="test" value="文字選中"></input> $("#test").select(11111,function(e) {//響應文字選中回調//this指向 div元素 //e.data => 11111 傳遞數據 });<h2>input與textarea</h2><div class="left"><h4>測試一</h4><div class="aaron">選中文字:input<input type="text" value="多多帥" /></div><button id="bt1">觸發input元素的select事件</button><h4>測試二</h4><div class="aaron">textarea:<textarea rows="3" cols="20">用鼠標選中文字</textarea></div></div><script type="text/javascript">//監聽input元素中value的選中//觸發元素的select事件$("input").select(function(e){alert(e.target.value)})$("#bt1").click(function(){$("input").select();})//監聽textarea元素中value的選中$('textarea').select(function(e) {alert(e.target.value);});</script> 實例

    8、表單事件之submit事件

    提交表單是一個最常見的業務需求,比如用戶注冊,一些信息的輸入都是需要表單的提交。同樣的有時候開發者需要在表單提交的時候過濾一些的數據、

    做一些必要的操作(例如:驗證表單輸入的正確性,如果錯誤就阻止提交,從新輸入)此時可以通過submit事件,監聽下提交表單的這個動作

    使用上非常簡單,與基本事件參數處理保持一致

    方法一:$ele.submit()

    綁定$ele元素,不帶任何參數一般是用來指定觸發一個事件,用的比較少

    <div id="test">點擊觸發<div> $("ele").submit(function(){alert('觸發指定事件') }) $("#text").click(function(){$("ele").submit() //指定觸發事件 });

    方法二:$ele.submit( handler(eventObject) )

    綁定$ele元素,每次$ele元素觸發點擊操作會執行回調?handler函數

    這樣可以針對事件的反饋做很多操作了

    <form id="target" action="destination.html"><input type="submit" value="Go" /> </form> $("#target").submit(function() { //綁定提交表單觸發//this指向 from元素 });

    方法三:$ele.submit( [eventData ], handler(eventObject) )

    使用與方法二一致,不過可以接受一個數據參數,這樣的處理是為了解決不同作用域下數據傳遞的問題

    <form id="target" action="destination.html"><input type="submit" value="Go" /> </form> $("#target").submit(11111,function(data) { //綁定提交表單觸發//data => 1111 //傳遞的data數據 });

    通過在<form>元素上綁定submit事件,開發者可以監聽到用戶的提交表單的的行為

    具體能觸發submit事件的行為:

    • <input type="submit">
    • <input type="image">
    • <button type="submit">
    • 當某些表單元素獲取焦點時,敲擊Enter(回車鍵)

    上述這些操作下,都可以截獲submit事件。

    這里需要特別注意:

    form元素是有默認提交表單的行為,如果通過submit處理的話,需要禁止瀏覽器的這個默認行為 傳統的方式是調用事件對象 e.preventDefault() 來處理, jQuery中可以直接在函數中最后結尾return false即可 jQuery處理如下:$("#target").submit(function(data) { return false; //阻止默認行為,提交表單 });<h2>submit</h2><div class="left"><div class="aaron"><form id="target1" action="test.html">回車鍵或者點擊提交表單: <input type="text" value="輸入新的值" /><input type="submit" value="Go" /></form></div><div class="aaron"><form id="target2" action="destination.html">回車鍵或者點擊提交表單,禁止瀏覽器默認跳轉: <input type="text" value="輸入新的值" /><input type="submit" value="Go" /></form></div></div><script type="text/javascript">//回車鍵或者點擊提交表單$('#target1').submit(function(e) {alert('捕獲提交表達動作,不阻止頁面跳轉')});//回車鍵或者點擊提交表單,禁止瀏覽器默認跳轉:$('#target2').submit(function() {alert('捕獲提交表達動作,阻止頁面跳轉')return false;});</script> 實例

    二、事件綁定

    1、on()的多事件綁定

    之前學的鼠標事件,表單事件與鍵盤事件都有個特點,就是直接給元素綁定一個處理函數,所有這類事件都是屬于快捷處理。

    翻開源碼其實可以看到,所有的快捷事件在底層的處理都是通過一個"on"方法來實現的。jQuery on()方法是官方推薦的綁定事件的一個方法。

    基本用法:.on( events ,[?selector ] ,[?data ] )

    • events: 事件
    • selector: 選擇器(可選的)
    • function: 事件處理函數

    最常見的給元素綁定一個點擊事件,對比一下快捷方式與on方式的不同

    $("#elem").click(function(){}) //快捷方式 $("#elem").on('click',function(){}) //on方式

    最大的不同點就是on是可以自定義事件名,當然不僅僅只是如何,繼續往下看

    多個事件綁定同一個函數

    $("#elem").on("mouseover mouseout",function(){ });

    通過空格分離,傳遞不同的事件名,可以同時綁定多個事件

    多個事件綁定不同函數

    $("#elem").on({mouseover:function(){}, mouseout:function(){} });

    通過空格分離,傳遞不同的事件名,可以同時綁定多個事件,每一個事件執行自己的回調方法

    將數據傳遞到處理程序

    function greet( event ) {alert( "Hello " + event.data.name ); //Hello 天王蓋地虎 } $( "button" ).on( "click", {name: "天王蓋地虎" }, greet );

    可以通過第二參數(對象),當一個事件被觸發時,要傳遞給事件處理函數的

    <h2>on綁定多事件</h2><h4>測試一</h4><div class="left">點擊觸發:on('click',fn)<div id="test1"></div></div><script type="text/javascript">//事件綁定一$("#test1").on('click', function(e) {$(this).text('觸發事件:' + e.type)})</script><h4>測試二</h4><div class="left">點擊觸發:on('mousedown mouseup')<div id="test2"></div></div><script type="text/javascript">//多事件綁定一$("#test2").on('mousedown mouseup', function(e) {$(this).text('觸發事件:' + e.type)})</script><h4>測試三</h4><div class="right">點擊觸發:on(mousedown:fn1,mouseup:fn2)<div id="test3"></div></div><script type="text/javascript">//多事件綁定二$("#test3").on({mousedown: function(e) {$(this).text('觸發事件:' + e.type)},mouseup: function(e) {$(this).text('觸發事件:' + e.type)}})</script> 實例

    2、on()的高級用法

    針對自己處理機制中,不僅有on方法,還有根據on演變出來的live方法(1.7后去掉了),delegate方法等等。

    這些方法的底層實現部分 還是on方法,這是利用了on的另一個事件機制委托的機制衍變而來的

    委托機制

    .on( events ,[ selector ] ,[ data ], handler(eventObject) )

    在on的第二參數中提供了一個selector選擇器,簡單的來描述下

    //參考下面3層結構<div class="left"><p class="aaron"><a>目標節點</a> //點擊在這個元素上</p> </div> //給出如下代碼: $("div").on("click","p",fn)

    事件綁定在最上層div元素上,當用戶觸發在a元素上,事件將往上冒泡,一直會冒泡在div元素上。如果提供了第二參數,

    那么事件在往上冒泡的過程中遇到了選擇器匹配的元素,將會觸發事件回調函數

    <h2>on事件委托</h2><div class="left"><a>錢多多</a><div class="aaron"><a>111</a><a>點擊這里</a></div></div><script type="text/javascript">//給body綁定一個click事件//沒有直接a元素綁定點擊事件//通過委托機制,點擊a元素的時候,事件觸發$('body').on('click', 'a', function(e) {alert(e.target.textContent)})</script> 實例

    三、移除事件

    1、卸載事件off()方法

    • 通過.on()綁定的事件處理程序
    • 通過off() 方法移除該綁定

    根據on綁定事件的一些特性,off方法也可以通過相應的傳遞組合的事件名,名字空間,選擇器或處理函數來移除綁定在元素上指定的事件處理函數。

    當有多個過濾參數時,只有與這些參數完全匹配的事件處理函數才會被移除

    綁定2個事件

    $("elem").on("mousedown mouseup",fn)

    刪除一個事件

    $("elem").off("mousedown")

    刪除所有事件

    $("elem").off("mousedown mouseup")

    快捷方式刪除所有事件,這里不需要傳遞事件名了,節點上綁定的所有事件講全部銷毀

    <h2>刪除事件</h2><h4>測試一</h4><div class="left">on('mousedown mouseup')<div class="aaron">點擊觸發</div></div><button>點擊刪除mousedown事件</button><script type="text/javascript">var n = 0;//綁定事件$(".aaron:first").on('mousedown mouseup', function(e) {$(this).text( '觸發類型:' + (e.type) + ",次數" + ++n)++n;})//刪除事件$("button:first").click(function() {$(".aaron:first").off('mousedown')})</script><h4>測試一</h4><div class="left">on('mousedown mouseup')<div class="aaron">點擊觸發</div></div><button>點擊銷毀所有事件off</button><script type="text/javascript">var n = 0;//綁定事件$(".aaron:last").on('mousedown mouseup', function(e) {$(this).text( '觸發類型:' + (e.type) + ",次數" + ++n)++n;})//刪除事件$("button:last").click(function() {$(".aaron:last").off()})</script> 實例

    四、頁面載入

    當DOM載入就緒可以查詢及操縱時綁定一個要執行的函數。這是事件模塊中最重要的一個函數,因為它可以極大地提高web應用程序的響應速度。

    兩種寫法:

    $(document).ready(function(){ // 在這里寫你的JS代碼... })

    簡寫:

    $(function(){ // 你在這里寫你的代碼 })

    文檔加載完綁定事件,并且阻止默認事件發生:

    <!DOCTYPE html> <html lang="zh-CN"> <head><meta charset="UTF-8"><meta http-equiv="x-ua-compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1"><title>登錄注冊示例</title><style>.error {color: red;}</style> </head> <body><form id="myForm"><label for="name">姓名</label><input type="text" id="name"><span class="error"></span><label for="passwd">密碼</label><input type="password" id="passwd"><span class="error"></span><input type="submit" id="modal-submit" value="登錄"> </form><script src="jquery-3.2.1.min.js"></script> <script src="s7validate.js"></script> <script>function myValidation() {// 多次用到的jQuery對象存儲到一個變量,避免重復查詢文檔樹var $myForm = $("#myForm");$myForm.find(":submit").on("click", function () {// 定義一個標志位,記錄表單填寫是否正常var flag = true;$myForm.find(":text, :password").each(function () {var val = $(this).val();if (val.length <= 0 ){var labelName = $(this).prev("label").text();$(this).next("span").text(labelName + "不能為空");flag = false;}});// 表單填寫有誤就會返回false,阻止submit按鈕默認的提交表單事件return flag;});// input輸入框獲取焦點后移除之前的錯誤提示信息$myForm.find("input[type!='submit']").on("focus", function () {$(this).next(".error").text("");})}// 文檔樹就緒后執行$(document).ready(function () {myValidation();}); </script> </body> </html> 實例

    ?

    轉載于:https://www.cnblogs.com/ManyQian/p/9163257.html

    總結

    以上是生活随笔為你收集整理的前端基础-jQuery的事件的用法的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。