jquery中on方法的優勢是什麼

2022-09-09 22:01:25

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其它相關文章!