Chapter 03. 노드 다루기 - 노드 찾기. Lesson 03. 자식 노드 찾기
WEB/JQUERY-CONCEPT 2017. 11. 9. 21:53 |Chapter 03. 노드 다루기 - 노드 찾기
Lesson 03. 자식 노드 찾기
- 핵심 01 : 모든 자식 노드 찾기
- 핵심 02 : 특정 자식 노드만 찾기
- 핵심 03 : 첫 번째 자식 노드 찾기
- 핵심 04 : 마지막 자식 노드 찾기
- 핵심 05 : n번째 자식 노드 찾기
- 핵심 01 : 모든 자식 노드 찾기
사용법 : $대상.children()
특정 노드의 바로 하위에 위치한 모든 자식 노드를 찾고 싶을 때 children() 메서드를 사용합니다
* children() vs contents() // 텍스트 노드를 포함해서 구하지않느냐 vs 구하느냐
chilren()은 자식 노드 중 오직 태그만을 골라 찾아 줍니다.
content()는 태그 노드는 물론 텍스트 노드 등의 모든 자식 노드를 자식 노드로 찾아 줍니다
(실무에서는 contents()를 사용하지 않지만, 가끔씩 사용한다.)
예제 01. #samplePage의 바로 하위 자식 노드만을 찾아 border를 "4px solid #f00"으로 변경해 주세요.
1 2 3 4 5 6 | $(document).ready(function() { $("#samplePage").children().css("border","4px solid #f00"); console.log($("#samplePage").children().length); // 테스트 }); | cs |
- 핵심 02 : 특정 자식 노드만 찾기
사용법 : $대상.children("선택자")
children("선택자") 메서드를 이용하면 선택자에 해당하는 특정 자식 노드만 찾을수 있습니다.
예제 02. #samplePage의 바로 하위 자식 노드 중 test1 클래스가 적용된 노드를 찾아 border를 "4px solid #f00"으로 변경해 주세요.
1 2 3 4 5 6 | $(document).ready(function() { $("#samplePage").children(".test1").css("border", "4px solid #f00"); console.log("#samplePage").children(".test1").length); }); | cs |
* children("선택자") 메서드를 find("선택자")와 동일한 기능으로 착각할 수 있는데, 이 둘은 완전히 다른 기능을 가진 메서드 입니다.
find() 메서드는 바로 다음 하위 자식 노드에서만 찾는 것이 아닌, 모든 자손 노드에서 찾는 것입니다.
1 2 3 4 5 6 | $(document).ready(function() { $("#samplePage").find(".test1").css("border", "4px solid #f00"); console.log("#samplePage").find(".test1").length); }); | cs |
- 핵심 03 : 첫 번째 자식 노드 찾기
사용법
1 2 3 4 5 | - $대상.children().first() - $대상.children().eq(0) - $대상.children(":first") - $대상.children(":eq(0)") | cs |
1 2 3 4 5 6 | $(document).ready(function() { var $menu = $("ul.menu"); $menu.children(":first").css("border", "4px solid #f00"); }); | cs |
풀이 02: 메서드를 이용하는 방법
1 2 3 4 5 6 | $(document).ready(function() { ar $menu = $("ul.menu"); $menu.children().first().css("border", "4px solid #f00"); }); | cs |
예제 04. 다음 풀이를 좀더 효율적인 코드로 변경해주세요
1 2 3 4 5 6 | $(document).ready(function() { var $menu = $("ul.menu"); $menu.children(":first").css("border", "4px solid #f00"); $menu.children(":last").css("border", "4px solid #f00"); }); | cs |
1 2 3 4 5 6 7 | $(document).ready(function() { var $menu = $("ul.menu"); var $children = $menu.children(); // children() 메서드 함수의 중복을 없애기 위해 $children.first().css("border", "4px solid #f00"); $children.last().css("border", "4px solid #f00"); }); | cs |
1 2 3 4 5 6 | $(document).ready(function() { $("div").find(":first").css("border", "4px solid #f00"); // 선택자를 이용하는 또는 $("div").find().first().css("border", "4px solid #f00"); // 메소드를 이용하는 방법 }); | cs |
- 핵심 04 : 마지막 자식 노드 찾기
사용법
1 2 3 4 5 6 7 | $대상.children().last() $대상.children(":last") $대상.children().eq($대상.children().length-1) $대상.children().(":eq("+$대상.children().length-1)+")") $대상.children().eq(-1) $대상.children(":eq(-1)") | cs |
1 2 3 4 5 | $(document).ready(function() { var $menu = $("ul.menu"); $menu.children(":last").css("border", "4px solid #f00"); } | cs |
- 핵심 05 : n번째 자식 노드 찾기
사용법
- $대상.children().eq(index) // 메서드
- $대상.children(":eq("+index+")") // 선택자
* 이경우도 가급적 메소드 호출을 줄일 수 있는 선택자를 이용하는 것이 더 효과적입니다.
예제 07. ul.menu의 바로 하위 자식 노드 중 두 번째 자식 노드(인덱스 값으로 1번째)의 border를 "4px solid #f00"으로 변경해 주세요.
1 2 3 4 5 | $(document).ready(function() { var $menu = $("ul.menu"); $menu.children(":eq(1)").css("border", "4px solid #f00"); }); | cs |
'WEB > JQUERY-CONCEPT' 카테고리의 다른 글
Chapter 04. 노드 다루기 - 노드 생성/추가/삭제/이동. Lensson 01. 노드 생성 및 추가 (0) | 2017.11.09 |
---|---|
Chapter 03. 노드 다루기 - 노드 찾기. Lesson 05. 형제 노드 찾기 (0) | 2017.11.09 |
Chapter 03. 노드 다루기 - 노드 찾기. Lesson 04. 부모 노드 찾기 (0) | 2017.11.09 |
Chapter 03. 노드 다루기 - 노드 찾기. Lesson 02. 찾은 노드 다루기 (0) | 2017.11.09 |
Chapter 03. 노드 다루기 - 노드 찾기. Lesson 01. 일반 노드 찾기 (0) | 2017.11.09 |