Contoh kaedah jQuery on() dan kelebihan jquery on() method_jquery

WBOY
Lepaskan: 2016-05-16 15:42:07
asal
1075 orang telah melayarinya

Kaedah jQuery on() ialah kaedah yang disyorkan secara rasmi untuk acara mengikat.

$(selector).on(event,childSelector,data,function,map)
Salin selepas log masuk

Beberapa kaedah biasa sebelum ini dikembangkan daripada ini termasuk.

ikat()

 $("p").bind("click",function(){
    alert("The paragraph was clicked.");
  });
  $("p").on("click",function(){
    alert("The paragraph was clicked.");
  });
Salin selepas log masuk

wakilkan()

$("#div1").on("click","p",function(){
    $(this).css("background-color","pink");
  });
  $("#div2").delegate("p","click",function(){
    $(this).css("background-color","pink");
  });
Salin selepas log masuk

langsung()

  $("#div1").on("click",function(){
    $(this).css("background-color","pink");
  });
  $("#div2").live("click",function(){
    $(this).css("background-color","pink");
  });
Salin selepas log masuk

Tiga kaedah di atas tidak disyorkan selepas jQuery1.8 Secara rasmi, dalam 1.9, telah membatalkan penggunaan kaedah live(), jadi. adalah disyorkan Semua menggunakan kaedah on().

petua: Jika anda perlu mengalih keluar kaedah terikat pada on(), anda boleh menggunakan kaedah off().

$(document).ready(function(){
  $("p").on("click",function(){
    $(this).css("background-color","pink");
  });
  $("button").click(function(){
    $("p").off("click");
  });
});
Salin selepas log masuk

petua: Jika acara anda hanya memerlukan satu operasi, anda boleh menggunakan kaedah one()

$(document).ready(function(){
  $("p").one("click",function(){
    $(this).animate({fontSize:"+=6px"});
  });
});
Salin selepas log masuk

cetus() mengikat

$(selector).trigger(event,eventObj,param1,param2,...)
$(document).ready(function(){
  $("input").select(function(){
    $("input").after(" Text marked!");
  });
  $("button").click(function(){
    $("input").trigger("select");
  });
});
Salin selepas log masuk

Berbilang acara terikat pada fungsi yang sama

$(document).ready(function(){
 $("p").on("mouseover mouseout",function(){
  $("p").toggleClass("intro");
 });
});
Salin selepas log masuk

Berbilang acara terikat kepada fungsi yang berbeza

$(document).ready(function(){
 $("p").on({
  mouseover:function(){$("body").css("background-color","lightgray");}, 
  mouseout:function(){$("body").css("background-color","lightblue");}, 
  click:function(){$("body").css("background-color","yellow");} 
 });
});
Salin selepas log masuk

Ikatan acara tersuai

$(document).ready(function(){
 $("p").on("myOwnEvent", function(event, showName){
  $(this).text(showName + "! What a beautiful name!").show();
 });
 $("button").click(function(){
  $("p").trigger("myOwnEvent",["Anja"]);
 });
});
Salin selepas log masuk

Haruskan data untuk berfungsi

function handlerName(event) 
{
 alert(event.data.msg);
}
$(document).ready(function(){
 $("p").on("click", {msg: "You just clicked me!"}, handlerName)
});
Salin selepas log masuk

Berlaku pada elemen yang belum dicipta

$(document).ready(function(){
 $("div").on("click","p",function(){
  $(this).slideToggle();
 });
 $("button").click(function(){
  $("<p>This is a new paragraph.</p>").insertAfter("button");
 });
});
Salin selepas log masuk

Terdapat beberapa cara untuk mengikat peristiwa dalam jQuery Adalah disyorkan untuk menggunakan kaedah .on() untuk mengikat atas dua sebab:

.

Kaedah 1.on() boleh mengikat acara yang ditambahkan secara dinamik pada elemen halaman

Sebagai contoh, untuk elemen DOM yang ditambah secara dinamik pada halaman, peristiwa yang terikat dengan kaedah .on() tidak perlu mengambil berat tentang apabila elemen yang mendaftarkan acara itu ditambahkan, dan ia juga tidak perlu diikat berulang kali . Sesetengah pelajar mungkin terbiasa menggunakan .bind(), .live() atau .delegate() Jika anda melihat pada kod sumber, anda akan mendapati bahawa mereka sebenarnya memanggil kaedah .on() dan .live() kaedah dalam jQuery1 Versi 9 telah dialih keluar.

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 );
}
Salin selepas log masuk

Untuk mengalih keluar acara yang terikat dengan .on(), gunakan kaedah .off().

2. Acara pengikatan kaedah On() boleh meningkatkan kecekapan

Banyak artikel yang disebut menggunakan acara menggelegak dan proksi untuk meningkatkan kecekapan pengikatan acara, tetapi kebanyakannya tidak menyenaraikan perbezaan khusus, jadi untuk mengesahkan, saya melakukan ujian kecil.

Anggapkan bahawa 5,000 li ditambahkan pada halaman dan gunakan Profil Alat Pembangun Chrome untuk menguji masa pemuatan halaman.

Pengikatan biasa (sebut saja)

$('li').click(function(){
  console.log(this)
});
Salin selepas log masuk

Masa pelaksanaan proses pengikatan

2013-08-13_190358

Pengikatan biasa adalah bersamaan dengan mendaftarkan acara klik secara berasingan pada 5000li Penggunaan memori adalah kira-kira 4.2M dan masa pengikatan adalah kira-kira 72ms.

.on() mengikat

$(document).on('click',
'li',
function(){
  console.log(this)
})
Salin selepas log masuk

Masa pelaksanaan proses pengikatan

2013-08-13_191010

.on() binding menggunakan proksi acara dan hanya mendaftarkan acara klik pada dokumen Penggunaan memori adalah kira-kira 2.2M dan masa mengikat adalah kira-kira 1ms.

Di atas adalah keseluruhan kandungan artikel ini, saya harap ia akan membantu semua orang untuk mempelajari kaedah jquery on().

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!