jQuery 함수로 직접 자식 요소 만 가져 오는 방법


91

다음과 같은 테이블 구조가 있습니다.

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

자바 스크립트, 나는 변수가 tbl의 값을 $(table1), 그리고 나는 모든 직접 하위 요소 (TR) 싶어 <tbody>의를 table1. 내 코드는 다음과 같습니다.

$('tr', tb1)

분명히 그것은 <tr>table1과 table2의 모든 요소를 반환합니다 . 나는 얻을 수 있다고 생각

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

또는 이런 종류의 논리.

나는 $('table1 > tbody > tr')직접적인 아이를 얻을 수 있다는 것을 압니다 tr. 불행히도 나는 이것을 사용할 수 없습니다.

누구든지 이것에 대해 좋은 생각이 있습니까?

감사.

답변:


179

다음을 사용할 수 있습니다 find().

tbl.find("> tbody > tr")


2
이것은 멋진 아이디어입니다. $ ( '> tbody> tr', tb1)도 저에게 적합합니다. 감사합니다.
Jason Li

1
이것은 훌륭 >합니다. 앞에 아무것도 지정하지 않고 직접 자식 선택자 ( )를 사용할 수 있다는 것을 몰랐 습니다. 감사합니다.
silkfire

3
한 단계 아래에있는 직계 자식의 경우 단순히 'children ([selector])'을 사용할 수 있습니다.
orad

38
DIRECT CHILDREN = 한 수준 아래의 children 이므로 api.jquery.com/children 이 정답입니다. find ()가 아닙니다.-요소의 모든 하위 항목을 가져
옵니다 (

4
귀하의 의견이 정답이므로 별도의 답변 jave.web을 작성해야합니다.
mrmillsy

23

@ jave.web이 의견에서 언급했듯이

요소의 직계 자식을 검색하려면을 사용하십시오 .children(). 직계 자식 만 검색하고 더 깊은 곳으로 이동하지 않습니다. http://api.jquery.com/children/


5

이것이 바로 중첩 테이블에주의해야하는 이유입니다. 페이지 레이아웃이 아닌 데이터에 사용하기를 바랍니다.

당신의 하루를 망칠 수있는 또 다른 문제는 중첩 된 테이블에서 CSS 선택기를 사용하는 것입니다. 기본적으로 동일한 문제가 있습니다. 내부 테이블 내의 요소를 선택하지 않고는 외부 테이블의 TR 요소를 선택할 수도 없습니다. (IE6에서 구현되지 않았기 때문에 자식 선택기를 사용할 수 없습니다.)

이것은 작동합니다.

$("#table1 > tbody > tr")

그러나 TBODY 요소를 작성하는 데 브라우저에 의존해서는 안되므로 하드 코딩하는 것이 좋습니다.



당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.