Mencoba membungkus kepala saya di sekitar fungsi jQuery ".not ()", dan mengalami masalah. Saya ingin agar div induk menjadi "dapat diklik" tetapi jika pengguna mengklik elemen anak, skrip tidak dipanggil.
$(this).not(children()).click(function(){
$(".example").fadeOut("fast");
});
html:
<div class="example">
<div>
<p>This content is not affected by clicks.</p>
</div>
</div>
e.stopPropagation();
sebagai gantireturn false;
untuk kasus itu.}).find('.classes-to-ignore').click(function(e) {
untuk memilih elemen anak tertentue.stopPropagation()
dan kemudian menggunakannyareturn false
.return false
setara dengane.preventDefault(); e.stopPropagation()
sehingga mungkin memiliki efek samping yang tidak diharapkan.Saya menggunakan markup berikut dan mengalami masalah yang sama:
Di sini saya telah menggunakan logika berikut:
Dalam hal pertanyaan yang tepat, saya dapat melihat bahwa berfungsi sebagai berikut:
atau tentu saja sebaliknya:
Semoga itu bisa membantu.
sumber
.on("click", ...)
dalam versi terbaru jQuery seperti yang.live()
telah ditinggalkan sejak v1.7. Lihat api.jquery.com/liveAtau Anda juga bisa:
sumber
Solusi saya:
sumber
Saya pribadi akan menambahkan handler klik ke elemen anak yang tidak melakukan apa pun selain menghentikan penyebaran klik tersebut. Jadi akan terlihat seperti:
sumber
stopPropagation
dan mengembalikan false seperti yang disarankan jawaban lain?stopPropagation
mungkin lebih bersih karena tidak akan menghentikan peristiwa pada elemen anak terjadi, yang mungkin terjadi denganreturn false
.Berikut ini sebuah contoh. Kotak hijau adalah induk dan kotak kuning adalah elemen anak.
Semoga ini bisa membantu.
sumber