Saya memiliki kode berikut.
<html>
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
</head>
<div id="hello">Hello <div>Child-Of-Hello</div></div>
<br />
<div id="goodbye">Goodbye <div>Child-Of-Goodbye</div></div>
<script type="text/javascript">
<!--
function fun(evt) {
var target = $(evt.target);
if ($('div#hello').parents(target).length) {
alert('Your clicked element is having div#hello as parent');
}
}
$(document).bind('click', fun);
-->
</script>
</html>
Saya berharap hanya ketika Child-Of-Hello
diklik, $('div#hello').parents(target).length
akan kembali> 0.
Namun, itu terjadi begitu saja setiap kali saya mengklik di mana saja.
Apakah ada yang salah dengan kode saya?
javascript
jquery
Cheok Yan Cheng
sumber
sumber
.has()
tampaknya dirancang untuk tujuan ini. Karena mengembalikan objek jQuery, Anda harus mengujinya.length
juga:sumber
target
ada di dalamnya.Vanilla 1-liner untuk IE8 +:
Di sini, cara kerjanya:
sumber
Jika Anda memiliki elemen yang tidak memiliki selektor khusus dan Anda masih ingin memeriksa apakah itu turunan dari elemen lain, Anda dapat menggunakan jQuery.contains ()
Anda bisa meneruskan elemen induk dan elemen yang ingin Anda periksa ke fungsi itu dan mengembalikan jika yang terakhir adalah turunan dari yang pertama.
sumber
$.contains
mengambil elemen DOM dan bukan instance jQuery, atau itu akan selalu mengembalikan false.$.contains
tidak pernah mengembalikan nilai true jika dua argumen adalah elemen yang sama. Jika Anda menginginkannya, gunakandomElement.contains(domElement)
.Akhirnya menggunakan .closest () sebagai gantinya.
sumber
Anda bisa membuat kode Anda berfungsi hanya dengan menukar dua istilah:
Anda memiliki anak dan orang tua yang salah jalan.
sumber
var target = $(evt.target);
jadi kode Anda harus dibacaif (target.parents('div#hello').length) {
dan tidak...$(target)...
Selain jawaban lainnya, Anda dapat menggunakan metode yang kurang dikenal ini untuk mengambil elemen dari induk tertentu seperti,
Dalam kasus Anda, itu akan terjadi
Perhatikan penggunaan koma antara anak dan orang tua serta tanda kutip terpisah mereka. Jika mereka dikelilingi oleh kutipan yang sama
Anda akan memiliki objek yang berisi kedua objek, terlepas dari apakah objek tersebut ada di pohon dokumennya.
sumber