Rumah hujung hadapan web tutorial js Penjelasan terperinci tentang penggunaan mengikat acara jQuery (dengan perbezaan antara bind dan live)_jquery

Penjelasan terperinci tentang penggunaan mengikat acara jQuery (dengan perbezaan antara bind dan live)_jquery

May 16, 2016 pm 03:19 PM
jquery peristiwa mengikat

Artikel ini menganalisis penggunaan pengikatan acara jQuery dengan contoh. Kongsikan dengan semua orang untuk rujukan anda, butirannya adalah seperti berikut:

html:

<a href="#" onclick="addBtn()">addBtn</a>
<div id="mDiv">
  <button class="cBtn" onclick="alert(11111)">button1</button>
  <button class="cBtn">button2</button>
  <button class="cBtn">button3</button>
</div>

Salin selepas log masuk

javascript:

<script type="text/javascript">
 function addBtn(){
   $('#mDiv').append(' <button class="cBtn">button5</button>')
 }
jQuery(function($){
//使用on代替live和delegate(live由于性能原因已经被废弃,被delegate代替),新添加到mDiv的button依然会有绑定的事件
$('#mDiv').on('click','.cBtn',function(index, eleDom){
alert($(this).html())
 });
//使用on代替bind
$('.cBtn').on('click',function(){
alert($(this).html())
 })
//注意:
/*
1、无论使用bind、on、delegate、click(function())都是重复绑定,即绑定的同类型事件被放到一个事件队列中,依次执行,后绑定的事件不会替换之前绑定的,对于on使用off,delegate用undelegate,bind及click使用unbind来解除绑定,例如unbind(type)传递为事件类型,如果不传type则解出所有事件绑定;需要注意的是元素本身自带的事件无法unbind(如button1)
2、要绑定自定义事件,如'open',以上函数都可以使用,但激活需要使用trigger
总结:
建议使用on函数,绑定形式为$('.myClass').on({
click:function(eleDom){
...do someting...
},
dbclick:function(eleDom){
...do someting...
}
....
})
*/
}
</script>

Salin selepas log masuk

Beberapa nota:

bind(type,[data],fn) mengikat pengendali acara pada acara tertentu untuk setiap elemen yang dipadankan

Salin kod Kod adalah seperti berikut:
$("a").bind("click" ,function( ){alert("ok");});

live(type,[data],fn) melampirkan pengendali acara pada semua elemen padanan, walaupun jika elemen itu ditambahkan kemudian
Salin kod Kod adalah seperti berikut:
$("a").live("click" ,function( ){alert("ok");});

delegate(selector,[type],[data],fn) menambahkan satu atau lebih pengendali acara pada elemen yang ditentukan (elemen anak bagi elemen yang dipilih) dan menentukan fungsi untuk dijalankan apabila peristiwa ini berlaku
Salin kod Kod adalah seperti berikut:
$("#container").delegate("a "," klik", function(){alert("ok");})

pada(acara,[pemilih],[data],fn) Fungsi pengendali acara yang mengikat satu atau lebih acara pada elemen yang dipilih

Perbezaan:

.bind() terikat terus pada elemen

.live() terikat pada elemen melalui gelembung. Lebih sesuai untuk jenis senarai, terikat pada nod DOM dokumen. Kelebihan .bind() ialah ia menyokong data dinamik.

.delegate() ialah proksi acara yang lebih tepat untuk kegunaan berskala kecil dan prestasinya lebih baik daripada .live()

.on() ialah versi 1.9 terbaharu yang menyepadukan tiga kaedah sebelumnya bagi mekanisme mengikat peristiwa baharu

Tambahan: Perbezaan antara mengikat dan hidup

Terdapat tiga cara untuk mengikat acara dalam jQuery: ambil acara klik sebagai contoh

(1)target.click(function(){});

(2)target.bind("klik",function(){});

(3)target.live("klik",fungsi(){});

Kaedah pertama mudah difahami Malah, ia serupa dengan penggunaan JS biasa, cuma satu tiada

Kaedah kedua dan ketiga adalah semua peristiwa yang mengikat, tetapi mereka sangat berbeza Mari kita fokus pada menerangkannya di bawah, kerana ini banyak digunakan jika anda menggunakan rangka kerja jQuery.

【Perbezaan antara mengikat dan hidup】

Kaedah langsung sebenarnya adalah varian daripada kaedah ikatan Fungsi asasnya adalah sama dengan kaedah ikatan Kedua-duanya mengikat suatu peristiwa kepada unsur, tetapi kaedah ikatan hanya boleh mengikatnya pada elemen yang sedia ada adalah tidak sah untuk elemen yang baru dijana oleh JS dan kaedah lain selepas itu Kaedah langsung hanya menebus kelemahan kaedah ikatan ini Ia juga boleh mengikat peristiwa yang sepadan dengan unsur yang dihasilkan kemudian. Jadi bagaimanakah ciri kaedah langsung ini dilaksanakan? Mari kita bincangkan prinsip pelaksanaannya di bawah.

Sebab kaedah langsung juga boleh mengikat peristiwa yang sepadan dengan unsur yang dijana kemudian dikaitkan dengan "delegasi acara" yang dipanggil "delegasi acara" bermakna peristiwa yang terikat kepada unsur nenek moyang boleh diikat kepada unsur keturunan untuk digunakan . Mekanisme pemprosesan kaedah langsung adalah untuk mengikat acara pada nod akar pokok DOM dan bukannya mengikatnya secara langsung kepada elemen. Berikan satu contoh untuk menggambarkan:

$(".clickMe").live("click",fn);
$("body").append("<div class='clickMe'>测试live方法的步骤</div>");

Salin selepas log masuk

Apabila kita mengklik pada elemen baharu ini, langkah berikut akan berlaku:

(1) Hasilkan acara klik dan serahkannya kepada div untuk diproses

(2) Memandangkan tiada peristiwa yang terikat secara langsung dengan div, acara itu berbuih terus ke pepohon DOM

(3) Peristiwa terus menggelembung ke nod akar pokok DOM Secara lalai, acara klik terikat pada nod akar

(4) Laksanakan acara klik yang terikat dengan langsung

(5) Kesan sama ada objek terikat pada peristiwa itu wujud, dan tentukan sama ada perlu untuk meneruskan pelaksanaan peristiwa terikat. Mengesan objek acara dilakukan dengan mengesan

Salin kod Kod adalah seperti berikut:
$(event.target).closest('.clickMe')
Bolehkah ia dicapai dengan mencari elemen padanan.

(6) Melalui ujian (5), jika objek terikat kepada peristiwa wujud, peristiwa terikat akan dilaksanakan.

Memandangkan kaedah langsung akan mengesan sama ada objek terikat pada peristiwa itu wujud hanya apabila peristiwa berlaku, kaedah langsung boleh melaksanakan elemen tambahan dan pengikatan peristiwa kemudiannya. Sebaliknya, ikatan akan menentukan sama ada unsur yang terikat dengan peristiwa itu wujud semasa fasa mengikat peristiwa itu dan hanya akan mengikat unsur semasa, bukan pada nod induk.

Mengikut analisis di atas, manfaat hidup adalah sangat hebat, jadi mengapa kita perlu menggunakan kaedah bind? Sebab mengapa jQuery mengekalkan kaedah bind dan bukannya menggunakan kaedah langsung untuk menggantikan bind adalah kerana live tidak dapat menggantikan bind sepenuhnya dalam beberapa kes. Perbezaan utama adalah seperti berikut:

(1) Kaedah bind boleh mengikat mana-mana acara JavaScript, manakala kaedah langsung hanya menyokong klik, dblclick, keydown, tekan kekunci, keyup, mousedown, mousemove, mouseout, mouseover dan mouseup dalam jQuery 1.3. 1, fokus dan acara biru juga disokong (dipetakan kepada fokus dan fokus, yang lebih sesuai dan boleh menggelembung). Selain itu, dalam jQuery 1.4.1, hover (dipetakan kepada "mouseenter mouseleave") juga disokong.

(2) live() tidak menyokong sepenuhnya elemen yang ditemui melalui traversal DOM. Sebaliknya, anda harus sentiasa menggunakan kaedah .live() terus selepas pemilih.

(3) Apabila elemen menggunakan kaedah langsung untuk mengikat peristiwa, jika anda ingin menghalang penghantaran atau menggelegak acara, anda mesti mengembalikan palsu dalam fungsi Hanya memanggil stopPropagation() tidak boleh menghalang penghantaran peristiwa menggelegak

Pembaca yang berminat dengan lebih banyak kandungan yang berkaitan dengan acara dan kaedah jQuery boleh menyemak topik khas tapak ini: "Ringkasan penggunaan dan teknik acara biasa jQuery"

Saya harap artikel ini akan membantu semua orang dalam pengaturcaraan jQuery.

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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Tutorial BTCC: Bagaimana untuk mengikat dan menggunakan dompet MetaMask pada pertukaran BTCC? Tutorial BTCC: Bagaimana untuk mengikat dan menggunakan dompet MetaMask pada pertukaran BTCC? Apr 26, 2024 am 09:40 AM

MetaMask (juga dipanggil Little Fox Wallet dalam bahasa Cina) ialah perisian dompet penyulitan percuma dan diterima baik. Pada masa ini, BTCC menyokong pengikatan pada dompet MetaMask Selepas mengikat, anda boleh menggunakan dompet MetaMask untuk log masuk dengan cepat, menyimpan nilai, membeli syiling, dsb., dan anda juga boleh mendapatkan bonus percubaan 20 USDT untuk pengikatan pertama. Dalam tutorial dompet BTCCMetaMask, kami akan memperkenalkan secara terperinci cara mendaftar dan menggunakan MetaMask, dan cara mengikat dan menggunakan dompet Little Fox dalam BTCC. Apakah dompet MetaMask? Dengan lebih 30 juta pengguna, MetaMask Little Fox Wallet ialah salah satu dompet mata wang kripto yang paling popular hari ini. Ia percuma untuk digunakan dan boleh dipasang pada rangkaian sebagai sambungan

Bagaimana untuk mengikat sub-akaun pada Xiaohongshu? Bagaimanakah ia menyemak sama ada akaun itu normal? Bagaimana untuk mengikat sub-akaun pada Xiaohongshu? Bagaimanakah ia menyemak sama ada akaun itu normal? Mar 21, 2024 pm 10:11 PM

Dalam era ledakan maklumat hari ini, pembinaan jenama peribadi dan imej korporat telah menjadi semakin penting. Sebagai platform perkongsian kehidupan fesyen terkemuka di China, Xiaohongshu telah menarik sejumlah besar perhatian dan penyertaan pengguna. Bagi pengguna yang ingin mengembangkan pengaruh mereka dan meningkatkan kecekapan penyebaran kandungan, sub-akaun yang mengikat telah menjadi cara yang berkesan. Jadi, bagaimanakah Xiaohongshu mengikat sub-akaun? Bagaimana untuk menyemak sama ada akaun itu normal? Artikel ini akan menjawab soalan-soalan ini untuk anda secara terperinci. 1. Bagaimana untuk mengikat sub-akaun pada Xiaohongshu? 1. Log masuk ke akaun utama anda: Pertama, anda perlu log masuk ke akaun utama Xiaohongshu anda. 2. Buka menu tetapan: klik "Saya" di penjuru kanan sebelah atas, dan kemudian pilih "Tetapan". 3. Masukkan pengurusan akaun: Dalam menu tetapan, cari pilihan "Pengurusan Akaun" atau "Pembantu Akaun" dan klik

Langkah dan kaedah untuk mengikat Douyin dalam Toutiao Langkah dan kaedah untuk mengikat Douyin dalam Toutiao Mar 22, 2024 pm 05:56 PM

1. Buka Toutiao. 2. Klik Saya di penjuru kanan sebelah bawah. 3. Klik [System Settings]. 4. Klik [Tetapan Akaun dan Privasi]. 5. Klik butang di sebelah kanan [Douyin] untuk mengikat Douyin.

Bagaimana untuk mengikat apl Cainiao ke Pinduoduo? Bagaimana untuk menambah Cainiao Wrap ke platform Pinduoduo? Bagaimana untuk mengikat apl Cainiao ke Pinduoduo? Bagaimana untuk menambah Cainiao Wrap ke platform Pinduoduo? Mar 19, 2024 pm 02:30 PM

Aplikasi Cainiao ialah platform yang boleh memberikan anda pelbagai maklumat logistik Fungsi di sini sangat berkuasa dan mudah digunakan Jika anda mempunyai sebarang masalah berkaitan logistik, ia boleh diselesaikan di sini -perkhidmatan berhenti boleh menyelesaikan segala-galanya dalam masa Menyemak penghantaran ekspres, mengambil penghantaran ekspres, dan lain-lain semuanya tanpa sebarang masalah. Kami telah bekerjasama dengan pelbagai platform dan semua maklumat boleh ditanya Mungkin berlaku bahawa barang yang dibeli di Pinduoduo tidak dapat memaparkan maklumat logistik Sebenarnya, anda perlu mengikat Pinduoduo secara manual untuk mencapai ini. Cara mengikat Cainiao ke akaun Pinduoduo: 1. Buka APP Cainiao dan pergi ke halaman utama

Bagaimana untuk menggunakan kaedah permintaan PUT dalam jQuery? Bagaimana untuk menggunakan kaedah permintaan PUT dalam jQuery? Feb 28, 2024 pm 03:12 PM

Bagaimana untuk menggunakan kaedah permintaan PUT dalam jQuery? Dalam jQuery, kaedah menghantar permintaan PUT adalah serupa dengan menghantar jenis permintaan lain, tetapi anda perlu memberi perhatian kepada beberapa butiran dan tetapan parameter. Permintaan PUT biasanya digunakan untuk mengemas kini sumber, seperti mengemas kini data dalam pangkalan data atau mengemas kini fail pada pelayan. Berikut ialah contoh kod khusus menggunakan kaedah permintaan PUT dalam jQuery. Mula-mula, pastikan anda memasukkan fail perpustakaan jQuery, kemudian anda boleh menghantar permintaan PUT melalui: $.ajax({u

Bagaimana untuk mengikat APP Cainiao kepada Pinduoduo Bagaimana untuk mengikat APP Cainiao kepada Pinduoduo Bagaimana untuk mengikat APP Cainiao kepada Pinduoduo Bagaimana untuk mengikat APP Cainiao kepada Pinduoduo Mar 19, 2024 pm 05:16 PM

Adakah anda tahu cara mengikat Pinduoduo apabila menggunakan Cainiao Wrap App versi rasmi Cainiao Wrap tidak menyegerakkan beberapa maklumat logistik Pinduoduo pada platform ini. Apa yang perlu kami lakukan ialah Anda boleh menyalin nombor pesanan atau menyemak telefon bimbit anda untuk melihat jika ada sebarang maklumat penghantaran ekspres. Sudah tentu, ini semua perlu diselesaikan secara manual Jika anda ingin mengetahui lebih lanjut, datang dan lihat dengan editor. Cara mengikat APP Cainiao ke Pinduoduo 1. Buka APP Cainiao dan klik "Panduan Pakej" di penjuru kiri sebelah atas halaman utama. 2. Dalam antara muka, terdapat banyak laman web membeli-belah, dan akaun boleh diikat. 3. Klik untuk mengimport platform e-dagang lain. 4. Keizinan pengguna: Klik Pinduoduo untuk pergi ke antara muka

Bagaimana untuk mengikat aplikasi kereta Xiaomi pada peranti longgokan pengecasan Bagaimana untuk mengikat aplikasi kereta Xiaomi pada peranti longgokan pengecasan Apr 01, 2024 pm 06:52 PM

Kereta model Mi su7 terbaru yang dilancarkan oleh Xiaomi telah mendominasi pelbagai senarai carian hangat Ramai pengguna yang kebetulan ingin membeli kereta telah memilih kereta model Xiaomi su7 untuk pembelian Jadi bagaimana anda menggunakan aplikasi kereta Xiaomi anda untuk mengikat kereta selepas memilih Jika anda memutuskan untuk menggunakan longgokan pengecasan rumah untuk mengecas, panduan tutorial ini akan memberi anda pengenalan terperinci, saya harap ia dapat membantu anda. Mula-mula, kami membuka aplikasi mudah alih Xiaomi, klik butang Saya di sudut kanan bawah, dan kemudian dalam antara muka Saya, anda boleh melihat pilihan longgokan pengecasan rumah Selepas memasuki halaman yang mengikat longgokan pengecasan, klik kod imbasan butang di bawah dan imbas kod QR pada longgokan pengecasan Kod QR boleh digunakan untuk mengikat longgokan pengecasan pada apl.

Petua jQuery: Cepat ubah suai teks semua teg pada halaman Petua jQuery: Cepat ubah suai teks semua teg pada halaman Feb 28, 2024 pm 09:06 PM

Tajuk: Petua jQuery: Cepat ubah suai teks semua teg pada halaman Dalam pembangunan web, kita selalunya perlu mengubah suai dan mengendalikan elemen pada halaman. Apabila menggunakan jQuery, kadangkala anda perlu mengubah suai kandungan teks semua teg dalam halaman sekaligus, yang boleh menjimatkan masa dan tenaga. Berikut akan memperkenalkan cara menggunakan jQuery untuk mengubah suai teks semua teg pada halaman dengan cepat, dan memberikan contoh kod khusus. Pertama, kita perlu memperkenalkan fail perpustakaan jQuery dan memastikan bahawa kod berikut dimasukkan ke dalam halaman: &lt

See all articles