mengikat acara jQuery dan mewakilkan examples_jquery
Contoh dalam artikel ini menerangkan pengikatan dan delegasi acara jQuery. Kongsikan dengan semua orang untuk rujukan anda. Kaedah khusus adalah seperti berikut:
Pengikatan dan delegasi acara JQuery boleh dilaksanakan menggunakan pelbagai kaedah, on() , bind() , live() , delegate() , dan one().
Kadangkala kita mungkin mengikat acara seperti ini:
alert("Pencetus selepas klik"); });
1 pada()
makluman( $(this).text() ); });
//Terdapat parameter data
fungsi myHandler(event) {
alert(event.data.foo);
}
$("p").on("klik", {foo: "bar"}, myHandler)
// ... sekarang foo akan dipanggil apabila perenggan diklik ...
$("body").on("klik", "p", foo);
// ... foo tidak lagi dipanggil
$("body").off("klik", "p", foo);
2. mengikat()
Parameter:
jenis: Rentetan yang mengandungi satu atau lebih jenis acara, dengan berbilang acara dipisahkan oleh ruang. Contohnya, "klik" atau "serahkan", atau nama acara tersuai.
data: Objek data tambahan dihantar ke objek acara sebagai nilai atribut event.data
fn: Fungsi pengendali terikat pada acara setiap elemen padanan
(taip,[data],palsu)
jenis: Rentetan yang mengandungi satu atau lebih jenis acara, dengan berbilang acara dipisahkan oleh ruang. Contohnya, "klik" atau "serahkan", atau nama acara tersuai.
data: Objek data tambahan dihantar ke objek acara sebagai nilai atribut event.data
false: Menetapkan parameter ketiga kepada false melumpuhkan tindakan lalai.
Ikat berbilang jenis acara pada masa yang sama:
mouseout:function(){$("body").css("background-color","#FFFFFF");}
});
$("p").bind("klik", {foo: "bar"}, pengendali)
Masalah dengan ikatan
Jika terdapat 10 lajur dan 500 baris dalam jadual di mana peristiwa klik terikat, maka mencari dan melintasi 5000 sel akan menyebabkan kelajuan pelaksanaan skrip menjadi perlahan dengan ketara, dan menyimpan 5000 elemen td dan pengendali acara yang sepadan juga akan Mengambil meningkatkan banyak ingatan (sama seperti semua orang berdiri di depan pintu menunggu penghantaran).
Berdasarkan contoh sebelumnya, jika kita ingin melaksanakan aplikasi album foto ringkas, setiap halaman hanya memaparkan lakaran kenit 50 foto (50 sel) dan pengguna mengklik pautan "Halaman x" (atau "Halaman Seterusnya") boleh secara dinamik memuatkan 50 gambar lagi dari pelayan melalui Ajax. Dalam kes ini, nampaknya peristiwa mengikat untuk 50 sel menggunakan kaedah .bind() boleh diterima semula.
Ini tidak berlaku. Menggunakan kaedah .bind() hanya akan mengikat peristiwa klik kepada 50 sel pada halaman pertama Sel dalam halaman berikutnya yang dimuatkan secara dinamik tidak akan mempunyai peristiwa klik ini. Dalam erti kata lain, .bind() hanya boleh mengikat acara kepada elemen yang sudah wujud apabila ia dipanggil dan tidak boleh mengikat acara kepada elemen yang akan ditambahkan pada masa hadapan (sama seperti bagaimana pekerja baharu tidak boleh menerima penghantaran ekspres).
Delegasi acara dapat menyelesaikan dua masalah di atas. Khusus untuk kod, hanya gunakan kaedah .live() yang baru ditambahkan dalam jQuery 1.3 dan bukannya kaedah .bind():
Kaedah .live() di sini akan mengikat acara klik pada objek $(document) (tetapi ini tidak boleh dicerminkan daripada kod. Ini juga merupakan sebab penting mengapa kaedah .live() telah dikritik. Kami akan membincangkannya secara terperinci kemudian. ), dan anda hanya perlu mengikat $(document) sekali (bukan 50 kali, apatah lagi 5000 kali), dan kemudian anda boleh mengendalikan acara klik sel foto yang dimuatkan secara dinamik. Apabila menerima sebarang acara, objek $(document) akan menyemak jenis acara dan sasaran acara Jika ia adalah acara klik dan sasaran acara ialah td, maka pengendali yang diwakilkan kepadanya akan dilaksanakan.
unbind(): Mengeluarkan pengikatan yang dilakukan oleh bind.
3. secara langsung()
Setakat ini, semuanya kelihatan sempurna. Malangnya, ini tidak berlaku. Oleh kerana kaedah .live() tidak sempurna, ia mempunyai kelemahan utama berikut:
Fungsi $() akan mencari semua elemen td dalam halaman semasa dan mencipta objek jQuery Namun, koleksi elemen td ini tidak digunakan semasa mengesahkan sasaran acara Sebaliknya, ungkapan pemilih digunakan untuk membandingkan dengan event.target atau nenek moyangnya elemen, jadi Menjana objek jQuery ini akan menyebabkan overhead yang tidak perlu;
Secara lalai, peristiwa terikat kepada elemen $(document) Jika struktur bersarang DOM sangat dalam, peristiwa yang menggelegak melalui sejumlah besar elemen nenek moyang akan menyebabkan kehilangan prestasi;
Ia hanya boleh diletakkan selepas elemen yang dipilih secara langsung dan tidak boleh digunakan selepas kaedah traversal DOM berturut-turut, iaitu, $("#info_table td").live... boleh digunakan, tetapi $("#info_table") .cari("td" ).langsung...Tidak;
Kumpul elemen td dan buat objek jQuery, tetapi operasi sebenar ialah objek $(document), yang membingungkan.
Penyelesaiannya
Untuk mengelakkan menjana objek jQuery yang tidak diperlukan, anda boleh menggunakan penggodaman yang dipanggil "delegasi awal", iaitu memanggil .live() di luar kaedah $(document).ready():
Di sini, (function($){...})(jQuery) ialah "fungsi tanpa nama yang dilaksanakan serta-merta", membentuk penutupan untuk mengelakkan konflik penamaan. Di dalam fungsi tanpa nama, $parameter merujuk kepada objek jQuery. Fungsi tanpa nama ini tidak menunggu sehingga DOM sedia sebelum dilaksanakan. Ambil perhatian bahawa apabila menggunakan penggodaman ini, skrip mesti dipautkan dan/atau dilaksanakan dalam elemen kepala halaman. Sebab untuk memilih masa ini ialah elemen dokumen tersedia pada masa ini, dan keseluruhan DOM jauh daripada dijana jika skrip diletakkan di hadapan teg isi penutup, ia tidak masuk akal, kerana DOM adalah sepenuhnya tersedia pada masa itu.
Dengan cara ini, "pemegang amanah" bertukar daripada $(document) lalai kepada $("#info_table")[0], menjimatkan perjalanan yang menggelegak. Walau bagaimanapun, parameter konteks yang digunakan dengan .live() mestilah elemen DOM yang berasingan, jadi objek konteks ditentukan di sini menggunakan $("#info_table")[0], yang diperoleh menggunakan operator indeks tatasusunan.
4. perwakilan()
Seperti yang dinyatakan sebelum ini, untuk menembusi batasan kaedah .bind() tunggal dan melaksanakan delegasi acara, jQuery 1.3 memperkenalkan kaedah .live(). Kemudian, untuk menyelesaikan masalah "rantai penyebaran peristiwa" yang terlalu panjang, jQuery 1.4 menyokong menentukan objek konteks untuk kaedah .live(). Untuk menyelesaikan masalah penjanaan koleksi elemen yang tidak perlu, jQuery 1.4.2 hanya memperkenalkan kaedah baharu.delegate().
Menggunakan .delegate(), contoh sebelumnya boleh ditulis seperti ini:
Menggunakan .delegate() mempunyai kelebihan berikut (atau menyelesaikan masalah berikut bagi kaedah .live()):
Ikat terus pemilih elemen sasaran ("td"), peristiwa ("klik") dan pengendali ke "dragee" $("#info_table"), tanpa pengumpulan elemen tambahan, laluan penyebaran peristiwa yang dipendekkan dan semantik yang jelas; >
Ia boleh dilihat bahawa kaedah .delegate() ialah penyelesaian yang agak sempurna. Tetapi apabila struktur DOM adalah mudah, .live() juga boleh digunakan.
Petua: Apabila menggunakan perwakilan acara, jika pengendali acara lain yang berdaftar pada elemen sasaran menggunakan .stopPropagation() untuk menghalang penyebaran acara, perwakilan acara akan menjadi tidak sah.
unelegate(): Alih keluar pengikatan perwakilan
Saya harap artikel ini akan membantu pengaturcaraan jQuery semua orang.

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

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

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



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

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

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.

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? 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

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.

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

Ketidakupayaan Kotak Hitam untuk mengikat Steam mungkin disebabkan oleh isu versi rangkaian atau perisian. Kotak hitam kecil menyediakan maklumat termasuk harga permainan yang dikeluarkan dan akan datang, keperluan konfigurasi komputer dan ulasan, dan analisis permainan yang mendalam. Selain itu, ia juga membolehkan pengguna mencari maklumat yang mereka perlukan melalui peranti mudah alih pada bila-bila masa dan di mana sahaja. Apa yang perlu dilakukan jika kotak hitam kecil tidak boleh diikat ke Steam 1. Sahkan status rangkaian dan pastikan peranti disambungkan ke Internet. 2. Semak versi Little Black Box Sila pastikan anda menggunakan versi terkini perisian Little Black Box dan cuba ikat akaun Steam anda. 3. Untuk menyemak tetapan akaun Steam, sila log masuk ke akaun Steam dan semak sama ada fungsi mengikat perisian pihak ketiga dihidupkan dalam tetapan privasi. 4. Hubungi perkhidmatan pelanggan rasmi Jika langkah di atas masih tidak dapat menyelesaikan masalah, anda disyorkan untuk menghubungi perkhidmatan pelanggan rasmi untuk mendapatkan bantuan.
