Jawaban:
Mengapa tidak menelusuri halaman penyeleksi (pendek) terlebih dahulu?
Ini dia: :eq()
operator. Ini digunakan seperti get()
, tetapi mengembalikan objek jQuery.
Atau Anda dapat menggunakan .eq()
fungsi juga.
.eq()
lebih sesuai untuk pertanyaan OP. :eq()
digunakan dalam parameter string ke $
, sedangkan .eq()
metode pada objek jQuery yang ada.
$('select').find('option').eq(n)
pada dasarnya akan mengabaikan pengelompokan, dan mendapatkan semua opsi secara keseluruhan. Jika Anda menginginkannya per grup, sesuatu seperti ini diperlukan:$('select').find('optgroup').each(function() { $(this).find('option').eq(n)...; })
Anda dapat menggunakan pemilih : eq , misalnya:
$("td:eq(2)").css("color", "red"); // gets the third td element
Atau fungsi eq (int) :
$("td").eq(2).css("color", "red");
Juga, ingat bahwa indeks ini berbasis nol.
:nth()
pemilih - jangan dikacaukan dengan:nth-child()
jika Anda memiliki kontrol atas kueri yang membangun objek jQuery, gunakan :eq()
$("div:eq(2)")
Jika Anda tidak memiliki kendali atas itu (misalnya, sedang dilewatkan dari fungsi lain atau sesuatu), kemudian gunakan .eq()
var $thirdElement = $jqObj.eq(2);
Atau jika Anda ingin bagian dari mereka (katakanlah, elemen ketiga, keempat dan kelima), gunakan .slice()
var $third4th5thElements = $jqObj.slice(2, 5);
.eq()
bukan yang :eq()
sebenarnya. Peningkatan kinerja sedikit.
.eq () -Bilangan bulat yang menunjukkan posisi elemen berbasis-0.
Ex:
Pertimbangkan sebuah halaman dengan daftar sederhana di atasnya:
<ul>
<li>list item 1</li>
<li>list item 2</li>
<li>list item 3</li>
<li>list item 4</li>
</ul>
Kami dapat menerapkan metode ini ke sekumpulan item daftar:
$( "li" ).eq( 2 ).css( "background-color", "red" );
Jika Anda sudah memiliki objek jquery dalam sebuah variabel, Anda juga bisa memperlakukannya sebagai array yang diindeks normal, tanpa menggunakan jquery:
var all_rows = $("tr");
for(var i=0; i < all_rows.length; i++){
var row = all_rows[i];
//additionally, you can use it again in a jquery selector
$(row).css("background-color","black");
}
Meskipun contoh di atas tidak berguna dengan cara apa pun, ini menggambarkan bagaimana Anda dapat memperlakukan objek yang dibuat oleh jquery sebagai array yang diindeks.
<select>
elemen, dan Anda menginginkan elemen combobox yang dipilih, gunakan$(row).val();
Jika saya memahami pertanyaan Anda dengan benar, Anda selalu dapat membungkus fungsi get seperti:
var $someJqueryEl = $($('.myJqueryEls').get(3));
eq()
memberi Anda gratis.
Jika Anda ingin mengambil elemen / node atau tag tertentu dalam loop untuk misalnya
<p class="weekday" data-today="monday">Monday</p>
<p class="weekday" data-today="tuesday">Tuesday</p>
<p class="weekday" data-today="wednesday">Wednesday</p>
<p class="weekday" data-today="thursday">Thursday</p>
Jadi, dari loop kode di atas dieksekusi dan kami ingin bidang tertentu untuk memilih untuk itu kita harus menggunakan pemilihan jQuery yang dapat memilih hanya elemen yang diharapkan dari loop di atas sehingga, kode akan
$('.weekdays:eq(n)');
misalnya
$('.weekdays:eq(0)');
serta dengan metode lain
$('.weekday').find('p').first('.weekdays').next()/last()/prev();
tetapi metode pertama lebih efisien bila HTML <tag>
memiliki nama kelas yang unik.
CATATAN: Metode kedua digunakan ketika mereka tidak ada nama kelas di elemen target atau node.
untuk lebih lanjut, ikuti https://api.jquery.com/eq/
Untuk iterasi menggunakan pemilih tampaknya tidak masuk akal:
var some = $( '...' );
for( i = some.length -1; i>=0; --i )
{
// Have to transform in a jquery object again:
//
var item = $( some[ i ] );
// use item at will
// ...
}
<html>
<head></head>
<body>
<script type="text/javascript"
src="http://code.jquery.com/jquery-2.1.0.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$('li:eq(1)').hide();
});
</script>
<ol>
<li>First</li>
<li>Second</li>
<li>Third</li>
</ol>
</body>
</html>
Saat dijalankan, ada dua item dalam daftar berurutan yang menunjukkan, Pertama, dan Ketiga. Yang kedua disembunyikan.
$(function(){
$(document).find('div').siblings().each(function(){
var obj = $(this);
obj.find('div').each(function(){
var obj1 = $(this);
if(!obj1.children().length > 0){
alert(obj1.html());
}
});
});
});
<div id="2">
<div>
<div>
<div>XYZ Pvt. Ltd.</div>
</div>
</div>
</div>
<div id="3">
<div>
<div>
<div>ABC Pvt Ltd.</div>
</div>
</div>
</div>
.eq()
bukan:eq()
?