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

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

<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. 불행히도 나는 이것을 사용할 수 없습니다.

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

감사.



답변

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

tbl.find("> tbody > tr")


답변

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

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


답변

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

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

이것은 작동합니다.

$("#table1 > tbody > tr")

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


답변


답변

두 요소의 ID가 있고 직접 요소를 찾으려면 코드 아래에서 사용하십시오.

$("#parent > #two")

중첩 검색을 원하면 find를 사용할 수 있습니다. 여기에서 자세히 설명합니다.
https://handyopinion.com/jquery-selector-find-nested-child-elements/


답변