jQuery에서 선택자로 자주 사용되는 것 중 :first-child와 :first의 차이를 알아보자. 우선 아래의 화면을 먼저 보자.
샘플을 위해 국내 모 커뮤니티의 메인 페이지에 있는 게시물 목록을 가져와봤는데 브라우저에 보여지는 모습은 위와 같고 그에 대한 HTML 코드는 아래와 같다.
<div class="board_new"> <h2 style="font-size:12px;padding:0 0 1px 5px;"><img src="/cs2/img/icon_n.gif" alt="n"> <a href="/cs2/bbs/board.php?bo_table=news">새로운 소식</a></h2> <ul> <li><span class="date">09/10</span> <span class="title"><a href="./cs2/bbs/board.php?bo_table=news&wr_id=1680802">방수방진폰 ‘갤럭시S4 액티브’, SKT 단독 출시…10월 시판</a></span><span class="read">[36]</span></li> <li><span class="date">09/10</span> <span class="title"><a href="./cs2/bbs/board.php?bo_table=news&wr_id=1680727">애플 지문인식센서, 아이폰 5S에만</a></span><span class="read">[69]</span></li> <li><span class="date">09/10</span> <span class="title"><a href="./cs2/bbs/board.php?bo_table=news&wr_id=1680718">야후, 新모바일 동영상 앱 '야후 스크린' 공개</a></span><span class="read">[1]</span></li> <li><span class="date">09/10</span> <span class="title"><a href="./cs2/bbs/board.php?bo_table=news&wr_id=1680679">칼 아이칸, “델 인수 포기”</a></span><span class="read">[9]</span></li> <li><span class="date">09/10</span> <span class="title"><a href="./cs2/bbs/board.php?bo_table=news&wr_id=1680672">삼성, 8개 두뇌 모두 쓰는 '옥타코어' 개발</a></span><span class="read">[39]</span></li> <li><span class="date">09/10</span> <span class="title"><a href="./cs2/bbs/board.php?bo_table=news&wr_id=1680625">소니, 미러리스 카메라 ‘알파 A3000’ 출시</a></span><span class="read">[29]</span></li> </ul> </div>
화면에서 보면 새로운 소식 코너는 <모두 6개의 <li> 요소를 후손으로 갖는 <div> 요소로 구성되어 있다. 그리고 6개의 각 소식은 다시 3개의 <span> 태그로 구성되어 포스팅된 날짜와 게시물 타이틀, 그리고 댓글수로 나누어져 있다.
:first-child 를 사용한 결과
// :first-child 선택자의 결과는? (두 코드는 동일한 결과를 보여줌) $('.board_new span').filter(':first-child'); $('.board_new span:first-child');
위의 선택자를 통해 가져오게 되는 것은 다음과 같이 6개의 각 소식의 포스팅된 날짜이다.
09/10 09/10 09/10 09/10 09/10 09/10
즉, 3개의 <span> 요소로 구성된 각 소식의 첫번째 <span> 태그의 집합인 것이다.
// 선택자를 통해 가져온 요소의 색깔을 빨간색으로 바꿔보자. $('.board_new span').filter(':first-child').css('color','red');
:first를 사용한 결과
// 선택자를 통해 가져온 요소의 색깔을 빨간색으로 바꿔보자. $('.board_new span').filter(':first').css('color','red');
위의 선택자를 통한 코드 실행으로 보여지는 결과는 다음과 같다.
위와 같이 변경된 화면을 보면 첫번째 <span> 태그만 선택된 것을 알 수 있다.
두 선택자의 차이
위의 결과를 비교해보면 :first와 :first-child 선택자 모두 특정한 위치에 있는 요소를 선택하는 역할을 하지만 여기서의 선택기준 위치는 :first의 경우 결과셋을 기준으로 한 위치(Position among matched elements)를 의미하고 :first-child는 부모(parent)와 형제(sibling)간의 관계에 기반한 위치(Position among siblings)를 의미한다고 볼 수 있다.
같은 논리로 :last-child와 :last를 이해할 수 있다.
'웹/모바일 개발 > jQuery' 카테고리의 다른 글
jQuery에서 $(document).ready() 에 관하여. (0) | 2014.03.21 |
---|---|
jquery로 당신이 할 수 있는 것 (1) | 2013.11.22 |
jQuery에서 $(document).ready()가 갖는 의미 (1) | 2013.08.30 |
[프로그래밍 도서] jQuery Mobile First Look 한국어판 : 빠르고 가벼운 제이쿼리 모바일 웹앱 개발 (0) | 2012.04.16 |
[프로그래밍 도서] 모던 웹을 위한 JavaScript + jQuery 입문 (0) | 2012.03.28 |
|