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.

Kuasa rangka kerja JavaScript terletak pada pembangunan yang memudahkan, meningkatkan pengalaman pengguna dan prestasi aplikasi. Apabila memilih rangka kerja, pertimbangkan: 1.

Pengenalan Saya tahu anda mungkin merasa pelik, apa sebenarnya yang perlu dilakukan oleh JavaScript, C dan penyemak imbas? Mereka seolah -olah tidak berkaitan, tetapi sebenarnya, mereka memainkan peranan yang sangat penting dalam pembangunan web moden. Hari ini kita akan membincangkan hubungan rapat antara ketiga -tiga ini. Melalui artikel ini, anda akan mempelajari bagaimana JavaScript berjalan dalam penyemak imbas, peranan C dalam enjin pelayar, dan bagaimana mereka bekerjasama untuk memacu rendering dan interaksi laman web. Kita semua tahu hubungan antara JavaScript dan penyemak imbas. JavaScript adalah bahasa utama pembangunan front-end. Ia berjalan secara langsung di penyemak imbas, menjadikan laman web jelas dan menarik. Adakah anda pernah tertanya -tanya mengapa Javascr

Node.js cemerlang pada I/O yang cekap, sebahagian besarnya terima kasih kepada aliran. Aliran memproses data secara berperingkat, mengelakkan beban memori-ideal untuk fail besar, tugas rangkaian, dan aplikasi masa nyata. Menggabungkan sungai dengan keselamatan jenis typescript mencipta powe

Perbezaan prestasi dan kecekapan antara Python dan JavaScript terutamanya dicerminkan dalam: 1) sebagai bahasa yang ditafsirkan, Python berjalan perlahan tetapi mempunyai kecekapan pembangunan yang tinggi dan sesuai untuk pembangunan prototaip pesat; 2) JavaScript adalah terhad kepada benang tunggal dalam penyemak imbas, tetapi I/O multi-threading dan asynchronous boleh digunakan untuk meningkatkan prestasi dalam node.js, dan kedua-duanya mempunyai kelebihan dalam projek sebenar.

JavaScript berasal pada tahun 1995 dan dicipta oleh Brandon Ike, dan menyedari bahasa itu menjadi C. 1.C Language menyediakan keupayaan pengaturcaraan prestasi tinggi dan sistem untuk JavaScript. 2. Pengurusan memori JavaScript dan pengoptimuman prestasi bergantung pada bahasa C. 3. Ciri lintas platform bahasa C membantu JavaScript berjalan dengan cekap pada sistem operasi yang berbeza.

JavaScript berjalan dalam penyemak imbas dan persekitaran Node.js dan bergantung pada enjin JavaScript untuk menghuraikan dan melaksanakan kod. 1) menjana pokok sintaks abstrak (AST) di peringkat parsing; 2) menukar AST ke bytecode atau kod mesin dalam peringkat penyusunan; 3) Laksanakan kod yang disusun dalam peringkat pelaksanaan.

Trend masa depan Python dan JavaScript termasuk: 1. Kedua -duanya akan terus mengembangkan senario aplikasi dalam bidang masing -masing dan membuat lebih banyak penemuan dalam prestasi.

Kedua -dua pilihan Python dan JavaScript dalam persekitaran pembangunan adalah penting. 1) Persekitaran pembangunan Python termasuk Pycharm, Jupyternotebook dan Anaconda, yang sesuai untuk sains data dan prototaip cepat. 2) Persekitaran pembangunan JavaScript termasuk node.js, vscode dan webpack, yang sesuai untuk pembangunan front-end dan back-end. Memilih alat yang betul mengikut keperluan projek dapat meningkatkan kecekapan pembangunan dan kadar kejayaan projek.


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 Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

SecLists
SecLists ialah rakan penguji keselamatan muktamad. Ia ialah koleksi pelbagai jenis senarai yang kerap digunakan semasa penilaian keselamatan, semuanya di satu tempat. SecLists membantu menjadikan ujian keselamatan lebih cekap dan produktif dengan menyediakan semua senarai yang mungkin diperlukan oleh penguji keselamatan dengan mudah. Jenis senarai termasuk nama pengguna, kata laluan, URL, muatan kabur, corak data sensitif, cangkerang web dan banyak lagi. Penguji hanya boleh menarik repositori ini ke mesin ujian baharu dan dia akan mempunyai akses kepada setiap jenis senarai yang dia perlukan.

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Dreamweaver Mac版
Alat pembangunan web visual
