Chapter 03. 노드 다루기 - 노드 찾기. Lesson 02. 찾은 노드 다루기
WEB/JQUERY-CONCEPT 2017. 11. 9. 19:05 |Chapter 03. 노드 다루기 - 노드 찾기.
Lesson 02. 찾은 노드 다루기
- 핵심 01 : 찾은 노드의 개수 구하기
- 핵심 02 : 찾은 노드 중 n번째 노드 접근하기
- 핵심 03 : 자바스크립트 DOM 객체 접근하기
- 핵심 04 : 순차적으로 찾은 노드 접근하기
- 핵심 05 : 찾은 노드 중에서 특정 노드만 찾기
- 핵심 06 : 찾은 노드의 자손 노드 중 특정 노드만 찾기
- 핵심 07 : 인덱스 값 구하기
- 핵심 01 : 찾은 노드의 개수 구하기
사용법 : $대상.length
length 프로퍼티를 이용하면 jQuery 객체 내부에 들어 있는 노드 개수를 구할 수 있습니다.
예제 01. 문서에서 div 태그 노드가 몇 개 인지 출력해 주세요.
1 2 3 4 | $(document).ready(function() { alert("length = "+$("div").length); // alert는 화면에 출력 }); | cs |
- 핵심 02 : 찾은 노드 중 n번째 노드 접근하기
1 2 3 4 5 6 7 8 | $(document).ready(function() { var $liList = $("ul.menu li"); var $li_1 = $liList.eq(1); // 배열로 생각하기. 2번째 메뉴의 노드. eq(0)는 1번째 메뉴의 노드 $li_1.css("border", "4px solid #f00"); // 한 줄로는 $("ul.menu li").eq(1).css("border", "4px solid #f00"); }); | cs |
- 핵심 03 : 자바스크립트 DOM 객체 접근하기
사용법 : $대상.get(index)
* 원하는 기능을 모두 jQuery가 가지고 있지 않을뿐더러,
jQuery에서 지원하지 않는 기능은 이 기능을 갖고 있는 자바스크립트 DOM에 직접 접근해 사용해야 할때도 종종 있습니다.
이때 사용하는 메서드가 바로 get() 입니다.
예제 03. 풀이 전 코드의 $liList 변수에 들어있는 jQuery 객체 내부의 HTMLLiElement DOM 객체 중 두 번째에 접근해서
DOM 객체의 기능을 사용해 border를 "4px solid #f00"으로 변경하세요.
1 2 3 4 5 6 7 8 9 10 | $(document).ready(function() { var $liList = $("ul.menu li"); var li_1 = $liList.get(1); // jQuery 객체가 아니기 때문에 li_1 앞에 $를 붙이지 않는다. // []를 이용하는 방법 var li_1 = $liLIst[1]; li_1.style.border = "4px solid #f00"; }); | cs |
- 핵심 04 : 순차적으로 찾은 노드 접근하기
사용법 :
1 2 3 4 5 | $대상.each(function(index) { var $target = $(this); 또는 var $target = $대상.eq(index); } | cs |
1 2 3 4 5 6 7 8 9 | $(document).ready(function() { var $liList = $("ul.menu li"); $liList.each(function(index) // { console.log("index = "+index); }) }); | cs |
1 2 3 4 5 | $대상.each(function(index) { var $target = $(this); 또는 var $target = $대상.eq(index); } | cs |
1 2 3 4 5 6 7 | $(document).ready(function() { $("ul.menu li").each(function(index) { concole.log(this); }); }); | cs |
1 2 3 4 5 6 7 8 9 | $(document).ready(function() { var $liList = $("ul.menu li"); $liList.each(function(index) { var bordperpx = (index+1)*2; $(this).css("border", borderpx+"px solid #f00"); }) }); | cs |
1 2 3 4 5 6 7 8 | $(document).ready(function() { $("ul.menu li").each(function(index) { var bordperpx = (index+1)*2; this.style.border = borderpx+"px solid #f00"; }) }); | cs |
1 2 3 4 5 6 7 8 9 | $(document).ready(function() { var $liList = $("ul.menu li"); $liList.each(function(index) { var bordperpx = (index+1)*2; $liList.eq(index).css("border", borderpx+"px solid #f00"); }) }); | cs |
- 핵심 05 : 찾은 노드 중에서 특정 노드만 찾기
1 2 3 4 5 | $(document).ready(function() { var $liList = $("ul.menu li"); $liList.fliter(".select").css("border", "4px solid #f00"); }); | cs |
- 핵심 06 : 찾은 노드의 자손 노드 중 특정 노드만 찾기
사용법 : $대상.find("선택자")
찾은 노드의 자식(자손포함) 노드 중에서 특정 노드를 찾고 싶을때 find() 메서드를 사용합니다.
주의해야 할 점은
find() 메서드는 현재 노드가 아닌 현재 노드의 자식을 포함한 자손 노드를 검색한다는 것 입니다.
오직 바로 아래 자식 노드에서 특정 노드를 찾고 싶은 경우는 children() 메서드를 사용합니다.
* filter() 메서드와 find() 메서드 차이점
filter() 메서드는 현재 노드 중에서 특정 노드를 걸러내고(filter) 싶을 때 사용. 검색 대상에서는 자식 및 자손노드는 제외
find() 메서드는 현재 노드의 자손 노드 중에서 특정 노드를 찾고(find) 싶을 때 사용. 검색 대상에서 현재 노드는 제외
예제 08. 아래에 등장하는 풀이 전 코드를 보면 $content에는 #content 노드를 감싸고 있는 jQuery 객체가 있습니다.
이 객체를 사용해 #content 노드의 자손(자식 포함) 노드 중 test1 클래스가 적용된 노드를 찾아 border를 "4px solid #f00"으로 변경하세요.
1 2 3 4 5 | $(document).ready(function() { var $content = $("#content"); $content.find(".test1").css("border","4px solid #f00"); }); | cs |
- 핵심 07 : 인덱스 값 구하기
사용법 :
$대상.index()
$목록.index($대상)
$목록.index(대상DOM)
index() 메서드를 이용하면 노드가 위치한 인덱스 값을 알 수 있습니다.
예제 09. 풀이 전 코드를 보면 메뉴 항목(ul.menu li)에 클릭 이벤트를 등록해 놓은 상태입니다.
클릭한 노드가 몇 번째 노드인지 index 값을 출력해 주세요.
1 2 3 4 5 6 7 | $(document).ready(function() { $("ul.menu li").click(function() { alert($(this).index()); }) }); | cs |
* index()를 사용할때 주의해야 할 사항.
<a> 태그가 <li> 태그에 하나씩 있는 경우,
즉 연속해서 태그가 있지 않은 경우 jQuery객체.index() 메서드를 호출하면 인덱스 값이 항상 0이 나오게 됩니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <body> <ul> <li><a href="#">menu1</a></li> <li><a href="#">menu2</a></li> <li><a href="#">menu3</a></li> <li><a href="#">menu4</a></li> </ul> </body> $(document).ready(function() { $("ul li a").click(function() { console.log("index = "+$(this).index()); }) }); | cs |
이럴때는 다음과 같이 알아내야함.
$대상.index($대상);
$대상.index(대상DOM);
1 2 3 4 5 6 7 8 9 | $(document).ready(function() { var $aList = $("ul li a"); $aList.click(function() { alert("index ="+$aList.index(this)) // alert("index ="+$aList.index($(this))) }) }); | 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 03. 자식 노드 찾기 (0) | 2017.11.09 |
Chapter 03. 노드 다루기 - 노드 찾기. Lesson 01. 일반 노드 찾기 (0) | 2017.11.09 |