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");
});