Nth jQuery öğesi nasıl edinilir


311

JQuery'de $("...").get(3)3. DOM öğesini döndürür. 3. jQuery öğesini döndürme işlevi nedir?

Yanıtlar:


310

Neden önce (kısa) seçiciler sayfasına göz atmıyorsunuz?

İşte: :eq()operatör. Aynı şekilde kullanılır get(), ancak jQuery nesnesini döndürür.

Veya .eq()işlevi de kullanabilirsiniz .


23
.eq()Bunun yerine olması gerekmiyor :eq()mu?
RubenGeert

15
Evet, .eq()OP sorusu için daha uygundur. :eq()dize parametresi içinde kullanıldığında $ise, .eq()var olan bir jQuery nesne üzerinde bir yöntemdir.
mjswensen

55
Yemin ederim, gitmeli ve her şeye bakmalıyım . bekar . zaman .
ivarni

3
@JoelWorsham İstenilen davranışa bağlıdır. $('select').find('option').eq(n)temel olarak gruplandırmayı yok sayar ve tüm seçenekleri bir bütün olarak alır. Grup başına istiyorsanız, bunun gibi bir şey gereklidir:$('select').find('optgroup').each(function() { $(this).find('option').eq(n)...; })
Dykam

4
"Neden önce (kısa) seçiciler sayfasına göz atmıyorsunuz?" - Çünkü "eq" çok kötü bir isim ve benim için eq karşılaştırma gibi düzenli olarak sadece atlamak ....
mmlac

309

Örneğin: eq seçiciyi kullanabilirsiniz, örneğin:

$("td:eq(2)").css("color", "red"); // gets the third td element

Veya eq (int) işlevi:

$("td").eq(2).css("color", "red");

Ayrıca, dizinlerin sıfır tabanlı olduğunu unutmayın.


7
Bir eşanlamlı olarak, :nth()seçici de kullanabilirsiniz - karıştırılmamalıdır:nth-child()
user123444555621

Daha iyi cevap ve gerçekten 3 yıl sonra düzenlenmemiş :)
Andrew

gerçekten selektörün / fonksiyonun nasıl kullanılacağını açıkladığınız için teşekkür ederiz
Joseph Rogers

49

jQuery nesnesini oluşturan sorgu üzerinde denetiminiz varsa, :eq()

$("div:eq(2)")

Üzerinde kontrolünüz yoksa (örneğin, başka bir işlevden veya başka bir şeyden geçiriliyorsa), .eq()

var $thirdElement = $jqObj.eq(2);

Veya bir bölümünü istiyorsanız (örneğin, üçüncü, dördüncü ve beşinci öğeler), .slice()

var $third4th5thElements = $jqObj.slice(2, 5);

Dilim arıyordum, ama nasıl arama yapacağından emin değildim. Orijinal soruda gerekenin ötesine geçtiğiniz için teşekkür ederiz.
Samik R

4
Bu cevabı tökezleyen insanlar için, not etmek için yararlı bir nokta, n. Alt seçicinin 1 tabanlı olduğu zaman: eq veya .eq () 0 tabanlı
Sudhanshu Mishra

1
Aslında .eq()yerine kullanmalısınız :eq(). Hafif performans artışı.
Qwerty

13

Bence bunu kullanabilirsin

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

Her eşleşen ul içindeki ikinci li'yi bulur ve not eder.


11

.eq () - Elemanın 0 tabanlı konumunu gösteren bir tam sayı.

Ör:

Üzerinde basit bir liste bulunan bir sayfa düşünün:

<ul>
<li>list item 1</li>
<li>list item 2</li>
<li>list item 3</li>
<li>list item 4</li>
</ul>

Bu yöntemi liste öğeleri kümesine uygulayabiliriz:

$( "li" ).eq( 2 ).css( "background-color", "red" );

Daha fazla bilgi için: .eq ()


3

Bir değişkente zaten jquery nesneniz varsa, jquery kullanmadan bunu yalnızca normal bir dizinlenmiş dizi olarak ele alabilirsiniz:

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

Yukarıdaki örnek herhangi bir şekilde yararlı olmasa da, jquery tarafından oluşturulan nesneleri dizinlenmiş diziler olarak nasıl ele alabileceğinizi temsil eder.


Sağ ve bir tane daha (umarım faydalı) ipucu: Satır bir <select>öğe listesi içeriyorsa ve seçilen birleşik giriş öğesi istiyorsanız, şu öğeyi kullanın:$(row).val();
Matt

2

Sorunuzu doğru anlarsam, get işlevini her zaman şu şekilde sarabilirsiniz:

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

3
Bu sadece "zor yol" ve eq()size ücretsiz veren budur .
Caumons

1

Döngüdeki belirli bir öğeyi / düğümü veya etiketi getirmek istiyorsanız, ör.

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

Bu nedenle, yukarıdaki kod döngüsü yürütülür ve bunun için belirli alanın seçilmesini istiyoruz, sadece yukarıdaki döngüden bekletme öğesini seçebilen jQuery seçimini kullanmalıyız, böylece kod

$('.weekdays:eq(n)');

Örneğin

$('.weekdays:eq(0)');

ve diğer yöntemlerle

$('.weekday').find('p').first('.weekdays').next()/last()/prev();

ancak HTML <tag>benzersiz sınıf adı olduğunda ilk yöntem daha verimlidir .

NOT: İkinci yöntem, hedef öğede veya düğümde sınıf adı olmadığında kullanılır.

daha fazla bilgi için https://api.jquery.com/eq/ adresini takip edin


0

Seçici kullanan yinelemeler için bir anlam ifade etmiyor gibi görünüyor:

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

JQuery ile Nth öğesine erişmek ve kaldırmak için Canlı Örnek:

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

Çalıştığında, sıralı listede Birinci ve Üçüncü gösteren iki öğe vardır. İkincisi gizlendi.


PS: Sayım 0'dan başlar; Birincisi indeks 0'da, ikincisi indeks 1'de vb.
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 () {" Güz ilk, ben otomatik olarak ateş anonim işlevi oluşturduk. Bunun içinde, kardeşleri kullanarak üç ebeveyn div bulundu. Sonra tüm 3 ebeveyn div yinelenen ve her çocuk uzunluğu uzunluğu kontrol edin. Nasıl bir son div olup olmadığını ana div div olup olmadığını tespit edebilirsiniz.Şimdi her 3 ana ebeveyn div son div html
Sanjay Verma

Sen olabilir düzenleme yerine :) yorumlarında bilgi verme, cevabınızı
T3 H40
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.