본문 바로가기

개발/javascript&jquery

[jQuery] jQuery소개 / 노드찾기

반응형

자바스크립트+jQuery 완전정복 스터디 2권 (JQuery 기초와 활용)

스터디 정리

JQuery소개


1. jQuery의 기능 

- DOM : jquery 핵심 기능 / 노드 찾기, 추가, 삭제, 수정 까지 노드와 관련된 모든 기능을 제공 

- AJAX

- 플러그인

- 효과

 

2. CSS선택자

$(“*”) 모든 엘리먼트

$(“E”) 태그 이름이 E인 모든 엘리먼트

$(“E F”) E자식 노드중 태그 이름이 F인 모든 엘리먼트

$(“E.C”) 태그 이름이 E인 엘리먼트 중 C라는 클래스를 가진 모든 엘리먼트

$(“E .C”) E자식 노드중 라는 클래스 선택자를 가진 모든 엘리먼트

$(“E>F”) E 바로 아래 자식 중 태그 이름이 F인 모든 엘리먼트

 

3. CDN(Content Delivery Network)

콘텐츠를 여러 서버에 분산 배치해서 콘텐츠를 전송하는 과정에서 발생하는 트래픽 집중 병목 현상 및 데이터 손실을 해결하기 위한 기술이다.

 

4. DOMContentLoaded 이벤트 vs load 이벤트

Jquey의 ready() 메서드는 Document 객체에서 발생하는 DOMContentLoaded 이벤트를 포장한 메서드

DOMContentLoaded 이벤트는 웹 브라우저가 웹 페이지를 읽은 후 태그와 1:1 맵핑되는 DOM 객체를 생성한 후 발생한다. 이 이벤트가 발생한 시점에서는 이미지나 플래시 같은 무거운 콘텐츠는 아직 로드되지 않는다.

Window 객체에서 발생하는 load 이벤트는 이미지나 플래시 같이 무거운 콘텐츠가 모두 로드되고 난 후 발생한다.

 

 

노드찾기


 

1. 일반 노드 찾기

속성으로 노드 찾기 

$(“E[A]”): 속성 A를 포함한 모든 E노드 찾기 

$(“E[A=V]”): 속성 A의 값이 V인 모든 E노드 찾기

$(“E[A^=V]”): 속성 A의 값이 V로 시작하는 모든 E노드 찾기

$(“E[A$=V]”): 속성 A의 값이 V로 끝나는 모든 E노드 찾기

$(“E[A*=V]”): 속성 A의 값이 V를 포함하고 있는 모든 E노드 찾기

 

 

2. 찾은 노드 다루기

01. 찾은 노드의 개수 구하기 - $대상.length

$("div").length : div 태그의 개수

 

02. 찾은 노드 중 n 번째 노드 접근하기 - $대상.eq(index)

 

03. 자바스크립트 DOM 객체 접근하기 - $대상.get(index)   or   [] 

jquery 는 만능이 아니기 때문에 자바스크립트 dom에 직접 접근해 사용해야 할 떄가 있다.

$liList.get(1) or $liList[1]

 

04. 순차적으로 찾은 노드 접근하기 -  $대상.each(function(index){});

  04-1. each() 메서드의 실행구조 

  $대상에 들어있는 노드 개수만큼 매개변수 값으로 넘겨 받은 함수를 반복해서 호출한다.

  index값은 each()메서드가 매개변수 값으로 넘겨 받은 함수를 호출할 때 0부터 넘겨주는 값을 의미한다.

  04-2. each() 메서드에 매개변수 값으로 넘겨 사용하는 함수 내부의 this 개념 

  this는 $대상에 들어있는 index번째에 해당하는 자바스크립트 DOM을 의미한다.

  $(this)는 this가 일반 자바스크립트 DOM 객체를 의미하기 때문에 $(this)가 실행되면 이 DOM 객체를 포장하고 있는 새로운 Jquery객체가 생성된다.

 

05. 찾은 노드 중에서 특정 노드만 찾기 $대상.filter("선택자")

filter 대상자가 찾은 대상은 오직 현재 찾은 노드이며 자식, 부모 노드들과 관련 없다.

$liList.filter(".select").css(....) : liList변수에 들어있는 항목중 select 클래스가 적용된 노드를 찾아 변경

 

06. 찾은 노드의 자손(자식포함) 노드 중 특정 노드 찾기 - $대상.find("선택자")

( 오직 바로 아래 자식 노드에서 특정 노드를 찾고 싶은 경우에는 children() 메서드 사용 )

- filter()  / find() 차이점 

- filter() 메서드는 현재 노드 중에서 특정 노드를 걸러내고 싶을 때 사용한다. 검색 대상에서 자식& 자손노드는 제외

- find() 메서드는 현재 노드의 자손노드 중에서 특정 노드를 찾고 싶을 떄 사용한다. 검색 대상에서 현재 노드를 제외하고 모든 자손 노드에서 찾는다. <-> childern()은 바로 다음 하위 자식 노드에서 만 찾음 

 

07. 인덱스 값 구하기

$대상.index()

$목록.index($대상)

$목록.index(대상DOM)

 

<body>

<li><a>1</a></li>

<li><a>2</a></li>

<li><a>3</a></li>

</body>

<script>

$(document).ready(function(){

 $(“ul li a”).click(function(){

console.log($(this).index());

});  });

</script>

 

<a>태그가 <li>태그에 하나씩 있는 경우, 즉 연속해서 태그가 있지 않은 경우 jquery객체.index() 메서드를 호출하면 인덱스 값이 항상 0이 나온다.

인덱스 값을 정상적으로 출력 하기 위해서는 아래 와 같이 사용해야 한다. 

 

<script>

$(document).ready(function(){

var $aList = $(“ul li a”);

$aList.click(function(){

console.log($aList.index(this));

}); });

</script>

 

 

3. 자식 노드 찾기( 모든 자손 노드 X)

01. 모든 자식 노드 찾기 - $대상.children()

- contents() / children() 차이점 

-contents() : 태그 노드 + 텍스트 노드 등 모든 자식 노드를 찾는다. 

-children() : 태그 노드만 골라 찾는다.

 

02. 특정 자식 노드 찾기 - $대상.children("선택자")

- children("선택자") / find("선택자") 차이점  

- children("선택자") : 바로 하위 자식 노드에서만 찾는다.

- find("선택자") : 모든 자손 노드에서 찾는다. 

 

$(“div”).find(“:first”).css(“…..”) : 각 div 노드의 첫번째 자식 노드 css변경

$(“div).children(“:first”).css(“…..”) : 각 div 노드 x 

 

03. 첫 번째 자식 노드 찾기

$대상.children().first()

$대상.children().eq(0)

$대상.children().(“:first”)

$대상.children(“:eq(0)”)

 

첫 번째 자식 노드를 찾는 방법은 선택자를 이용하는 방법과 선택자를 이용하는 방법 두가지로 나눌 수 있다.

 

- 선택자를 이용하는 방법 소스

$menu.children(“:first”).css(…..);

 

- 메서드를 이용하는 방법 소스

$menu.children().first().css(…..);

 

선택자를 이용하는 방법이 효율적인 방법이다. 

메서드를 이용하는 방법은 children()메서드와 first()메서드를 두번 호출해서 처리 했기 때문이다.

 

04. 마지막번째 자식 노드 찾기

$대상.children().last()

$대상.children(“:last”)

$대상.children().eq($대상.children.length-1)

$대상.children(“:eq (“+($대상.children().length-1)+”)”)

$대상.children.eq(-1)

$대상.children(“:eq(-1)”)

1,2 번째 방법을 많이 사용 

 

05.  n번째 자식 노드 찾기

$대상.children().eq(index)

$대상.children(“:eq(“+index+”)”)

 

 

4. 부모 노드 찾기

01.  부모노드 찾기 - $대상.parent()

02.  조상노드 찾기 - $대상.parents([“선택자”])

$menu.parents(“.page”).css(“…..);

 

5. 형제 노드 찾기

01.  이전형제 노드 찾기 - $대상.prev() / $대상.prevAll([“선택자”])

02.   다음 형제 노드 찾기 - $대상.next() / $대상.nextAll([“선택자”])

 

 

반응형