Jawaban:
Konstruktor jQuery menerima parameter ke-2 yang disebut context
yang dapat digunakan untuk mengganti konteks pemilihan.
jQuery("img", this);
Yang sama dengan menggunakan .find()
seperti ini:
jQuery(this).find("img");
Jika gambar yang Anda inginkan hanya keturunan langsung dari elemen yang diklik, Anda juga dapat menggunakan .children()
:
jQuery(this).children("img");
Anda juga bisa menggunakannya
$(this).find('img');
yang akan mengembalikan semua img
s yang merupakan keturunandiv
$(this).children('img')
akan lebih baik. misalnya <div><img src="..." /><div><img src="..." /></div></div>
karena mungkin pengguna ingin menemukan img tingkat 1.
Jika Anda perlu mendapatkan yang pertama img
turun satu tingkat, Anda bisa melakukannya
$(this).children("img:first")
:first
hanya cocok dengan " turun tepat satu tingkat ", atau apakah cocok dengan "pertama" img
yang ditemukan?
.children()
adalah dari mana "turun tepat satu tingkat" berasal dan di :first
mana "pertama" berasal.
.find()
sebagai gantinya.children()
this
itu , sudah menjadi referensi untuk <div>
berisi <img>
, namun jika Anda memiliki beberapa tingkatan tag untuk dilalui dari referensi yang Anda miliki maka Anda pasti dapat menyusun lebih dari satuchildren()
panggilan
Jika tag DIV Anda segera diikuti oleh tag IMG, Anda juga dapat menggunakan:
$(this).next();
Anak- anak langsung adalah
$('> .child-class', this)
Anda dapat menemukan semua elemen img dari induk div seperti di bawah ini
$(this).find('img') or $(this).children('img')
Jika Anda ingin elemen img tertentu, Anda dapat menulis seperti ini
$(this).children('img:nth(n)')
// where n is the child place in parent list start from 0 onwards
Div Anda hanya mengandung satu elemen img. Jadi untuk ini di bawah ini benar
$(this).find("img").attr("alt")
OR
$(this).children("img").attr("alt")
Tetapi jika div Anda mengandung lebih banyak elemen img seperti di bawah ini
<div class="mydiv">
<img src="test.png" alt="3">
<img src="test.png" alt="4">
</div>
maka Anda tidak dapat menggunakan kode atas untuk menemukan nilai alt elemen img kedua. Jadi Anda dapat mencoba ini:
$(this).find("img:last-child").attr("alt")
OR
$(this).children("img:last-child").attr("alt")
Contoh ini menunjukkan gagasan umum bahwa cara Anda dapat menemukan objek aktual di dalam objek induk. Anda bisa menggunakan kelas untuk membedakan objek anak Anda. Itu mudah dan menyenangkan. yaitu
<div class="mydiv">
<img class='first' src="test.png" alt="3">
<img class='second' src="test.png" alt="4">
</div>
Anda dapat melakukan ini seperti di bawah ini:
$(this).find(".first").attr("alt")
dan lebih spesifik seperti:
$(this).find("img.first").attr("alt")
Anda dapat menggunakan find atau children seperti kode di atas. Untuk lebih lanjut kunjungi Children http://api.jquery.com/children/ dan Temukan http://api.jquery.com/find/ . Lihat contoh http://jsfiddle.net/lalitjs/Nx8a6/
Cara merujuk ke anak di jQuery. Saya merangkumnya di jQuery berikut:
$(this).find("img"); // any img tag child or grandchild etc...
$(this).children("img"); //any img tag child that is direct descendant
$(this).find("img:first") //any img tag first child or first grandchild etc...
$(this).children("img:first") //the first img tag child that is direct descendant
$(this).children("img:nth-child(1)") //the img is first direct descendant child
$(this).next(); //the img is first direct descendant child
Tanpa mengetahui ID dari DIV saya pikir Anda bisa memilih IMG seperti ini:
$("#"+$(this).attr("id")+" img:first")
Coba kode ini:
$(this).children()[0]
$($(this).children()[0])
.
$(this:first-child)
$($(this).children()[x])
digunakan $(this).eq(x)
atau jika Anda ingin yang pertama, cukup $(this).first()
.
Anda dapat menggunakan salah satu metode berikut:
1 temukan ():
$(this).find('img');
2 anak():
$(this).children('img');
jQuery's each
adalah salah satu opsi:
<div id="test">
<img src="testing.png"/>
<img src="testing1.png"/>
</div>
$('#test img').each(function(){
console.log($(this).attr('src'));
});
Anda dapat menggunakan Child Selecor untuk referensi elemen anak yang tersedia di dalam induk.
$(' > img', this).attr("src");
Dan di bawah ini adalah jika Anda tidak memiliki referensi $(this)
dan Anda ingin referensi yang img
tersedia di dalam div
dari fungsi lain.
$('#divid > img').attr("src");
Berikut adalah kode fungsional, Anda dapat menjalankannya (ini adalah demonstrasi sederhana).
Ketika Anda mengklik DIV Anda mendapatkan gambar dari beberapa metode yang berbeda, dalam situasi ini "ini" adalah DIV.
$(document).ready(function() {
// When you click the DIV, you take it with "this"
$('#my_div').click(function() {
console.info('Initializing the tests..');
console.log('Method #1: '+$(this).children('img'));
console.log('Method #2: '+$(this).find('img'));
// Here, i'm selecting the first ocorrence of <IMG>
console.log('Method #3: '+$(this).find('img:eq(0)'));
});
});
.the_div{
background-color: yellow;
width: 100%;
height: 200px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="my_div" class="the_div">
<img src="...">
</div>
Semoga ini bisa membantu!
Anda mungkin memiliki 0 hingga banyak <img>
tag di dalamnya<div>
.
Untuk menemukan elemen, gunakan a .find()
.
Untuk menjaga keamanan kode Anda, gunakan a .each()
.
Menggunakan .find()
dan .each()
bersama - sama mencegah kesalahan referensi nol dalam kasus 0 <img>
elemen sementara juga memungkinkan untuk penanganan beberapa <img>
elemen.
// Set the click handler on your div
$("body").off("click", "#mydiv").on("click", "#mydiv", function() {
// Find the image using.find() and .each()
$(this).find("img").each(function() {
var img = this; // "this" is, now, scoped to the image element
// Do something with the image
$(this).animate({
width: ($(this).width() > 100 ? 100 : $(this).width() + 100) + "px"
}, 500);
});
});
#mydiv {
text-align: center;
vertical-align: middle;
background-color: #000000;
cursor: pointer;
padding: 50px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<div id="mydiv">
<img src="" width="100" height="100"/>
</div>
$("body").off("click", "#mydiv").on("click", "#mydiv", function() {
event.stopImmediatePropagation()
elemen untuk mencegah hal itu terjadi.
$(document).ready(function() {
// When you click the DIV, you take it with "this"
$('#my_div').click(function() {
console.info('Initializing the tests..');
console.log('Method #1: '+$(this).children('img'));
console.log('Method #2: '+$(this).find('img'));
// Here, i'm selecting the first ocorrence of <IMG>
console.log('Method #3: '+$(this).find('img:eq(0)'));
});
});
.the_div{
background-color: yellow;
width: 100%;
height: 200px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="my_div" class="the_div">
<img src="...">
</div>
Anda bisa menggunakannya
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js">
$(this).find('img');
</script>
Jika img Anda adalah elemen pertama di dalam div lalu coba
$(this.firstChild);