JQuery işlevi ile yalnızca doğrudan alt öğeler nasıl elde edilir


91

Bunun gibi bir masa yapım var:

<table1>
  <tbody>
    <tr>
      <td></td>
        ...
      <td>
        <table2>
          <tbody>
            <tr>
              <td></td>
            </tr>
          </tbody>
        </table>
      </td>
    </tr>
   </tbody>
  </table>

Javascript, ben bir değişken tbldeğeriyle $(table1), sonra tüm direkt alt öğelerini (tr) almak istiyorum <tbody>arasında table1. Benim kodum:

$('tr', tb1)

Görünüşe göre <tr>tablo1 ve tablo2'deki tüm öğeleri döndürüyor . Sanırım geçebilirim

$('tr', tb1).not(function(){return $(this).parent().parent()[0] != tb1;})

veya bu tür bir mantık.

$('table1 > tbody > tr')Doğrudan çocuğu yakalayabileceğini biliyorum tr. Maalesef bunu kullanamam.

Bunun hakkında iyi bir fikri olan var mı?

Teşekkürler.

Yanıtlar:


180

Şunları kullanabilirsiniz find():

tbl.find("> tbody > tr")


2
bu vahşi bir fikir. $ ('> tbody> tr', tb1) de benim için çalışıyor. Teşekkür ederim.
Jason Li

2
Bu harika, doğrudan çocuk seçiciyi ( >) önünde hiçbir şey belirtmeden kullanabileceğinizi bilmiyordum . Teşekkür ederim.
silkfire

3
Yalnızca bir seviye aşağı olan doğrudan çocuklar için basitçe 'çocuklar ([seçici])' kullanabileceğinizi unutmayın.
orad

39
DOĞRUDAN ÇOCUKLAR = bir seviye aşağı çocuklar , bu nedenle api.jquery.com/children doğru cevaptır, find () - öğenin TÜM soyundan gelenleri alır (seçici tarafından filtrelenir) ...
jave.web

4
Yorumunuzu ayrı bir cevap yapmalısınız jave.web, sizinki doğru cevaptır.
mrmillsy

24

@ Jave.web yorumlarda belirtildiği gibi

Bir element kullanımının doğrudan çocuklarını aramak için .children(). Yalnızca doğrudan çocukları arayacak ve daha derine inmeyecektir. http://api.jquery.com/children/


5

Bu, tam olarak iç içe geçmiş masalarda dikkatli olunmasının nedenidir. Umarım bunları sayfa düzeni için değil veri için kullanırsınız.

Muhtemelen gününüzü mahvedecek bir başka sorun da iç içe geçmiş tablolarda CSS seçicileri kullanmaktır ... temelde aynı sorunla karşılaşırsınız - iç tablonun içindekileri seçmeden dış tablonun TR öğelerini de seçemezsiniz. (IE6'da uygulanmadığı için alt seçiciyi kullanamazsınız)

Bu çalışmalı:

$("#table1 > tbody > tr")

Ancak, TBODY öğesini sizin için oluşturması için tarayıcıya güvenmemeniz gerektiğinden, TBODY öğesini kodlamanızı tavsiye ederim.



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.