jquery中on方法的優勢:1、on()方法可以繫結動態新增到頁面元素的事件,其新增的事件處理程式適用於當前及未來的元素;2、on()方法一次效能給元素新增一個或多個事件處理程式,可以提升效率。
前端(vue)入門到精通課程:進入學習
本教學操作環境: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中on方法的優勢是什麼的詳細內容,更多請關注TW511.COM其它相關文章!