Kadangkala anda boleh menggunakan e.stopPropagation(); e.preventDefault(); Tetapi ia tidak boleh menghalang acara daripada ditambah.
Dalam keadaan apakah kita harus menghalang penambahan acara?
Contohnya:
Klik "Daftar Keluar". Apabila melakukan ini, pembayaran itu sendiri mempunyai acaranya sendiri, tetapi anda mesti menentukan sama ada untuk log masuk sebelum mendaftar keluar.
Kami mungkin menulis:
Kod Js
if(isLogin){ //Tentukan sama ada hendak log masuk
console.log("Tidak dilog masuk")
}lain{
//Kod berkaitan daftar keluar
}
Jika anda mengklik "Laman Utama Saya", semakan log masuk juga akan dilakukan
Log masuk kod penghakiman
if(isLogin){ //Tentukan sama ada hendak log masuk
console.log("Tidak dilog masuk")
}lain{
//Pusat peribadi
}
Jika terdapat lebih banyak log masuk untuk dinilai. Adakah terdapat lebih banyak kod seperti di atas? Kemudian saya menemui kaedah stopImmediatePropagation() untuk mengelakkan acara daripada dilampirkan. Masalah di atas bukan lagi masalah.
Penting: Pastikan peristiwa penghakiman log masuk ialah peristiwa terikat pertama.
Kod demo
demo
Checkout
- Tambahkan pada kegemaran
- Bayar oleh orang lain
- Tambah ke Troli
- Laman Utama Saya
//Ikat dahulu
$(".isLogin").on("klik", fungsi (e) {
if(true){ //Penghakiman log masuk
alert("Tidak log masuk");
e.stopImmediatePropagation();
}
kembali palsu;
});
$(".bil").on("klik",fungsi(){
alert("Daftar kandungan berkaitan!");
});
$(".a1").on("klik",fungsi(){
makluman("a1");
});
$(".a2").on("klik",function(){
makluman("a2");
});
$(".a3").on("klik",fungsi(){
alert("Ditambah pada troli");
});
$(".a4").on("klik",fungsi(){
alert("Penentuan log masuk");
});
Malah, jquery memberikan kami kaedah $._data($('.isLogin').get(0)) untuk melihat acara, membuka pepijat api dan masuk ke dalam konsol.
Kod Js
$._data($('.isLogin').get(0))
Anda akan melihat perkara berikut:
Kod Js
Objek { peristiwa={...}, handle=function()}
Klik untuk melihat tatasusunan acara, menjadikannya mudah untuk melihat acara yang terikat pada elemen.