CSS를 사용하여 특정 숫자의 자식을 얻는 방법은 무엇입니까?


270

나는이 table누구 td의 동적으로 생성됩니다. 나는 첫 번째와 마지막 아이를 얻는 방법을 알고 있지만 내 질문은 다음과 같습니다.

CSS를 사용하여 두 번째 또는 세 번째 자식을 얻는 방법이 있습니까?

답변:


398

최신 브라우저의 td:nth-child(2)경우 두 번째 tdtd:nth-child(3)세 번째에 사용하십시오. 이것들 td 은 모든 행에 대해 두 번째와 세 번째 검색한다는 것을 기억하십시오 .

버전 9 이전의 IE와의 호환성이 필요한 경우 Tim에서 제안한대로 형제 결합기 또는 JavaScript 사용하십시오 . 또한 그의 방법에 대한 설명과 설명은 이 관련 질문에 대한 나의 대답을 참조하십시오 .


19
이것은 CSS 3 선택기에서만 작동한다는 것을 잊지 마십시오 (즉, 9 이전의 IE 버전에서는 작동하지 않음).
zneak


2
일반적인 해결책 td:nth-of-type(3)으로 더 좋습니다. td:nth-child(3)인 요소와 일치합니다 모두 td 하고 , 부모의 셋째 아이 에 관계없이 이전의 두 형제의 요소 유형을 . td:nth-of-type(3)세 번째를 얻을 것이다 td, 상관없이 많은 비 방법의 td요소가되기 전에 있습니다 . td원하는 요소 앞에 비 요소 가 없으면 두 선택기 모두 동일한 항목과 일치합니다.
CJ 데니스

232

IE 7 및 8 (및 IE6을 포함하지 않는 CSS3를 지원하지 않는 다른 브라우저)의 경우 다음을 사용하여 두 번째 및 세 번째 하위를 얻을 수 있습니다.

둘째 자녀 :

td:first-child + td

세번째 자녀 :

td:first-child + td + td

그런 다음 + td선택하려는 추가 어린이마다 하나씩 추가하십시오.

IE6를 지원하고 싶다면 그렇게 할 수 있습니다! 작은 자바 스크립트 (이 예제에서는 jQuery)를 사용해야합니다.

$(function() {
    $('td:first-child').addClass("firstChild");
    $(".table-class tr").each(function() {
        $(this).find('td:eq(1)').addClass("secondChild");
        $(this).find('td:eq(2)').addClass("thirdChild");
    });
});

그런 다음 CSS에서 클래스 선택기를 사용하여 원하는대로 변경하십시오.

table td.firstChild { /*stuff here*/ }
table td.secondChild { /*stuff to apply to second td in each row*/ }

19
IE7 / 8 팁에 감사드립니다. 잘 작동합니다.
Brendon Crawford

2
내 답변에서 CSS3 선택기 또는 귀하의 CSS2 선택기를 가져 와서 jQuery에 직접 놓으면 IE6에서 자연스럽게 작동합니다. 수업을 추가하기 위해이 모든 추가 농구대를 뛸 필요가 없습니다.
BoltClock
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.