Cara mendapatkan elemen jQuery ke-n


311

Di jQuery, $("...").get(3)mengembalikan elemen DOM ke-3. Apa fungsi untuk mengembalikan elemen jQuery ke-3?

Jawaban:


310

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.


23
Bukankah itu seharusnya .eq()bukan :eq()?
RubenGeert

15
Ya, .eq()lebih sesuai untuk pertanyaan OP. :eq()digunakan dalam parameter string ke $, sedangkan .eq()metode pada objek jQuery yang ada.
mjswensen

55
Aku bersumpah aku harus pergi dan mencari ini setiap . lajang . waktu .
ivarni

3
@ JoelWorsham Tergantung pada perilaku yang diinginkan. $('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)...; })
Dykam

4
"Mengapa tidak menelusuri halaman penyeleksi (pendek) terlebih dahulu?" - Karena "eq" adalah nama yang sangat buruk dan saya secara teratur melewatkannya karena eq bagi saya berarti perbandingan ....
mmlac

309

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.


7
Sebagai sinonim, Anda juga dapat menggunakan :nth()pemilih - jangan dikacaukan dengan:nth-child()
user123444555621

Jawaban yang lebih baik dan tidak diedit 3 tahun setelah fakta :)
Andrew

terima kasih untuk benar-benar menjelaskan cara menggunakan pemilih / fungsi
Joseph Rogers

49

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

Sedang mencari slice, tetapi tidak yakin bagaimana cara mencari. Terima kasih telah melampaui apa yang diperlukan dalam pertanyaan awal.
Samik R

4
Untuk orang-orang yang menemukan jawaban ini, satu hal yang perlu diperhatikan adalah bahwa pemilih anak ke-1 didasarkan pada 1: eq or .eq () berbasis 0
Sudhanshu Mishra

1
Anda harus menggunakan, .eq()bukan yang :eq()sebenarnya. Peningkatan kinerja sedikit.
Qwerty

13

Saya pikir Anda bisa menggunakan ini

$("ul li:nth-child(2)").append("<span> - 2nd!</span>");

Ia menemukan li kedua di setiap ul yang cocok dan mencatatnya.


11

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

Untuk informasi lebih lanjut: .eq ()


3

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.


Benar, dan satu lagi petunjuk (semoga bermanfaat): Jika baris berisi daftar <select>elemen, dan Anda menginginkan elemen combobox yang dipilih, gunakan$(row).val();
Matt

2

Jika saya memahami pertanyaan Anda dengan benar, Anda selalu dapat membungkus fungsi get seperti:

var $someJqueryEl = $($('.myJqueryEls').get(3));

3
Ini hanya "jalan yang sulit" dan inilah yang eq()memberi Anda gratis.
Caumons

1

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/


0

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
   // ...
}

0

Contoh Langsung untuk mengakses dan menghapus elemen ke-N dengan jQuery:

<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.


PS: Hitungannya mulai dari 0; Pertama di indeks 0, kedua di indeks 1 dan seterusnya ....
KNU

0
 $(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>

"$ (function () {" pertama kali jatuh, saya telah membuat fungsi anonim, yang dipecat secara otomatis. Di dalamnya, saya menemukan tiga orangtua div menggunakan saudara kandung. Kemudian saya mengulangi di semua 3 orangtua div dan memeriksa panjang setiap panjang anak-anak. Bagaimana saya dapat mengidentifikasi bahwa apakah div terakhir atau tidak di div induk. Sekarang saya memberitahukan html div terakhir dari setiap 3 induk div utama.
Sanjay Verma

Anda dapat mengedit jawaban Anda, alih-alih memberikan informasi dalam komentar :)
T3 H40
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.