JQuery kullanarak ikinci çocuk alın


188
$(t).html()

İadeler

<td>test1</td><td>test2</td>

Ben ikincisini almak istiyorum tdden $(t)nesne. Bir çözüm aradım ama hiçbir şey benim için işe yaramadı. İkinci elementin nasıl elde edileceği hakkında bir fikrin var mı?

Yanıtlar:


350

ikinci çocuğu yakala:

$(t).children().eq(1);

veya ikinci çocuğu alın <td>:

$(t).children('td').eq(1);

2
$(t).children('td').eq(1)Ve$(t).children()[1]
Green Lei

6
@GreenLei başlangıç ​​için iyi bir jQuery nesnesi döndürür, ikincisi bir Düğüm nesnesi döndürür
anthonygore

2
Bu find()jQuery yöntemi için de geçerli mi? Olduğu gibi $(t).find('td').eq(1)ikinci elde etmek <td>ise, tdiyelim ki, bir masa ve ben daha 1 düğüm daha aşağı bakmak gerekiyordu?
Justin L.

Bir .children('td').eq(1)sebepten ötürü çalışmaya başlayamadım ama .find('td').eq(1)gayet iyi çalıştı.
SharpC

27

Kodda okunması belki daha açık bir çözüm:

Sırasız bir listenin 2. çocuğunu almak için:

   $('ul:first-child').next()

Ve daha ayrıntılı bir örnek: Bu kod, UL'nin 2. alt öğesinin 'my_list' olarak tanımlanan 'title' özelliğinin metnini alır:

   $('ul#my_list:first-child').next().attr("title")

Bu ikinci örnekte, gereksiz olduğu için seçicinin başlangıcındaki 'ul'den kurtulabilirsiniz , çünkü bir kimlik tek bir sayfaya özgü olmalıdır. Sadece örneğe netlik katmak için var.

Performans ve Bellek ile ilgili not , bu iki örnek iyi performanslardır, çünkü jquery'yi daha sonra filtrelenmesi gereken ul öğelerinin bir listesini kaydetmezler .


Performansı önemsediğimiz halde, devam edelim ve ulonu aramak zorunda kalmamak için bir referans alalım.
daniel1426

22

Bu nasıl:

$(t).first().next()

BÜYÜK GÜNCELLEME:

Cevabın ne kadar güzel göründüğünün yanı sıra, kodun performansı hakkında da bir fikir vermelisiniz. Bu nedenle, $(t)değişkente tam olarak ne olduğunu bilmek de mantıklıdır . Bir dizi mi <TD>yoksa içinde <TR>birkaç tane olan bir düğüm <TD>smü? Konuyu daha fazla açıklamak için, <ul>50 <li>çocuklu bir listede jsPerf puanlarına bakın :

http://jsperf.com/second-child-selector

$(t).first().next()Yöntem farkla, burada hızlı olduğunu.

Ancak, diğer taraftan, <tr>düğümü alıp <td>çocukları bulup aynı testi çalıştırırsanız, sonuçlar aynı olmaz.

Umarım yardımcı olur. :)



9

Bunu dene:

$("td:eq(1)", $(t))

veya

$("td", $(t)).eq(1)

8

JQuery yöntemlerini kullanmaya ek olarak, size veren yerel cellskoleksiyonu <tr>da kullanabilirsiniz.

$(t)[0].cells[1].innerHTML

tBir DOM öğesi olduğunu varsayarsak , jQuery nesne oluşturma işlemini atlayabilirsiniz.

t.cells[1].innerHTML

3

Kimsenin bunu yapmanın yerel JS yolundan bahsetmediğini görmek şaşırtıcı.

JQuery olmadan:

Üst öğenin childrenözelliğine erişmeniz yeterlidir. Bir indeks ile erişilebilen canlı bir HTMLColection of children öğeleri döndürür . İkinci çocuğu almak istiyorsanız:

parentElement.children[1];

Sizin durumunuzda, böyle bir şey işe yarayabilir: (örnek)

var secondChild = document.querySelector('.parent').children[1];

console.log(secondChild); // <td>element two</td>
<table>
    <tr class="parent">
        <td>element one</td>
        <td>element two</td>
    </tr>
</table>

Ayrıca CSS3 seçicilerinin bir kombinasyonunu querySelector()kullanabilir ve kullanabilirsiniz :nth-of-type(). Bu yöntem bazı durumlarda daha iyi çalışabilir, çünkü bu durumda öğe türünü de belirtebilirsiniz td:nth-of-type(2) (örnek)

var secondChild = document.querySelector('.parent > td:nth-of-type(2)');

console.log(secondChild); // <td>element two</td>

1

Kullanım .find()yöntemi

$(t).find("td:eq(1)");

td:eq(x) // x is index of child you want to retrieve. eq(1) means equal to 1. //1 denote second element


<table> <tr class = "parent"> <td> birinci eleman </td> <td> ikinci eleman </td> </tr> </table>

Yorumunuzdaki bilgiler cevabınızla ilgiliyse, lütfen ayrıntıları Düzenle aracılığıyla yayınınıza ekleyin. Her iki durumda da, lütfen yorumunuzu silin.
mickmackusa

1

JQuery'de aşağıdaki gibi iki yöntem kullanabilirsiniz.

JQuery: nth-child Selector öğesini kullanma Bir öğenin konumunu, ikinci li öğesini seçmek istediğiniz gibi 2 olan bağımsız değişkeni olarak koydunuz.

$( "ul li:nth-child(2)" ).click(function(){
  //do something
});

JQuery: eq () Seçici'yi kullanma

Tam öğeyi almak istiyorsanız, öğenin dizin değerini belirtmeniz gerekir. Bir liste elemanı bir indeks 0 ile başlar. Li'nin 2. elemanını seçmek için argüman olarak 2'yi kullanmanız gerekir.

$( "ul li:eq(1)" ).click(function(){
  //do something
});

Örneğe bakın: jQuery'deki Listenin İkinci Alt Öğesini Alın

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.