jquery中on方法的優點:1、on()方法可以綁定動態加入頁面元素的事件,其新增的事件處理程序適用於目前及未來的元素;2、on()方法一次效能為元素添加一個或多個事件處理程序,可以提升效率。
本教學操作環境:windows7系統、jquery3.6.1版本、Dell G3電腦。
on() 方法在被選元素及子元素上新增一個或多個事件處理程序。
自 jQuery 版本 1.7 起,on() 方法是 bind()、live() 和 delegate() 方法的新的替代品。這個方法為 API 帶來很多便利,我們推薦使用該方法,它簡化了 jQuery 程式碼庫。
對於單一元素註冊事件分開寫比較麻煩
$("p").click(function(){ $(this).hide(); }); $("p").mouseenter(function(){ $(this).css("background","blue"); });
所以可以透過on來一次註冊多個事件
$("p").on({ click:function(){ $(this).hide(); }, mouseenter:function(){ $(this).css("background","blue"); } }); //还可以合并 $("div").on( "mouseenter mouseleave", function(){ $(this).toggleclass( "current"); })
jQuery綁定事件的方法有幾種,建議使用.on()方法綁定,原因有2點:
1、on()方法可以綁定動態加入到頁面元素的事件
例如動態加入到頁面的DOM元素,用.on()方法綁定的事件不需要關心註冊該事件的元素何時被加入進來,也不需要重複綁定。有的同學可能習慣於用.bind()、.live()或.delegate(),查看源碼就會發現,它們實際上調用的都是.on()方法,並且.live()方法在jQuery1. 9版本已經被移除。
使用 on() 方法新增的事件處理程序適用於目前及未來的元素(例如由腳本建立的新元素)。
bind:
function( types, data, fn ) { return this.on( types, null, data, fn ); },
live:
function( types, data, fn ) { jQuery( this.context ).on( types, this.selector, data, fn ); return this; },
delegate:
function( selector, types, data, fn ) { return this.on( types, selector, data, fn ); }
2、on()方法一次效能為元素增加一個或多個事件處理程序,可以提升效率
很多文章都提到了利用事件冒泡和代理來提升事件綁定的效率,大多都沒列出具體的差別,所以為了求證,我做一個小測試。
假設頁面新增了5000個li,用chrome開發者工具Profiles測試頁面載入時間。
普通綁定(姑且這麼稱呼它)
$("li").click(function(){ console.log(this) });
$(document).on("click","li",function(){ console.log(this) })
綁定過程的執行時間
普通綁定相當於在li上面分別註冊click事件,記憶體佔用約4.2M,綁定時間約72ms。
.on()綁定利用事件代理,只在document上註冊了一個click事件,記憶體佔用約2.2M,綁定時間約為1ms。
【推薦學習:jQuery影片教學、web前端影片】
以上是jquery中on方法的優點是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!