<한줄요약>

JQuery : CSS생성자를 기반으로 DOM 조작 / event처리를 간편히 하는 JS 라이브러리

 

1. JQuery란?

 

-  CSS생성자를 사용, 기본 JS보다 간편하게 DOM/이벤트 처리 가능

-  모든 브라우저에서 동일하게 동작, 호환성 고려할 필요가 없음

-  Event, Ajax를 쉽게 사용 가능

 

 

2. JQuery 기본 구문

 

-  CSS의 selector를 사용해 DOM을 탐색, 반환값으로 함수 수행

-  $(selector).action(); 의 구조이다.

-  DOM 탐색 전에 문서가 다 로드되어 있어야 한다

-  $(document).ready(function() {   });

-  $(function() {  });

-  2가지 방법으로 문서 로드 후 시작 가능

<script>
	$(document).ready(function() {
    	$(".button").click(function(){
        	$("#id").css("background", "orange");
        });
    });

</script>

-  .button class를 가지는 element 클릭시, #id id를 가지는 element의 css를 변경

 

-  css의 속성 선택자도 똑같이 이용 가능하다

-  $(selector[attr="value"]).action();

 

 

3. JQuery 선택자

 

-  css의 선택자 외에 추가된 선택자

 

-  필터 선택자

-  DOM 탐색한 결과 중 원하는 요소를 찾기 위해 사용

선택자 선택 요소
button input type="button" 혹은 button 태그
image, password, radio, reset 등 input의 type요소 type="~"인 input
checked 체크된 form
disabled 비활성화된 form
enabled 활성화된 form
focus 현재 포커스가 있는 form
input 모든 입력 폼
selected option 중 선택된 요소
hidden
visible
감춰진 요소
보이는 요소
header h1~h6 element

-  위치기반 필터 선택자

선택자 선택 요소
:first 첫번째 요소
:last 마지막 요소
:first-child
:last-child
첫번째 자식
마지막 자식
only-child 형제가 없는 요소
even
odd
짝수번째 요소
홀수번째 요소

-  함수기반 필터 선택자

선택자 선택 요소
:not(filter) 해당 선택자가 아닌 모든 요소
:contains(str) 해당 텍스트를 포함하는 요소
:nth-child(n) n번째 자식(들)
:eq(n)
:gt(n)
:lt(n)
n번째 요소
n번 초과 요소들
n번 미만 요소들
:has(f) 해당 선택자와 하나 이상 일치하는 요소들

 

-  래퍼세트

-  JQuery는 선택자를 통해 찾은 DOM 객체들을, 래퍼세트에 담아 반환한다

-  래퍼세트는 다양한 메소드를 지원해 DOM 처리를 돕는다

 

-  요소 반복

-  $.each(array, function(index, item) { } );

-  array의 각 요소들마다 foreach를 돈다. index : 배열 인덱스, item : array의 각 객체들

 

-  $(selector).each( function(index, item) { } );

-  $(selector)의 결과가 array역할을 한다

 

-  filter() : 기존 래퍼세트에서 DOM요소를 추가로 거른 후 반환

-  내부에 선택자 / 함수가 온다

-  필터 선택자로도 불충분한 경우, 함수를 사용해 필터링 조건 명시

 

-  find() : 래퍼세트에 대해 find 선택자를 만족하는 모든 자손요소 반환

 

 

4. DOM 객체 제어

 

속성 제어 메소드

-  attr(name) name에 해당하는 속성 값을 반환

-  attr(name, value)는 해당 속성에 값을 설정

-  removeAttr(name) 해당 속성 제거

 

-  addClass(className) class 추가

-  removeClass(className) class 제거

-  toggleClass(className) 클래스가 있으면 제거, 없으면 추가

 

-  css(styleName) css값 조회

-  css(name, value) css 값 설정

 

-  html() html 반환 (태그 포함)

-  html(value) html 설정

 

-  text() text반환 (태그 제외)

-  text(value) text설정

 

-  DOM 객체 추가

-  $("<h2>hello world!</h2>").css(~~).appenndTo("body");

-  $() : DOM객체를 바로 생성

 

-  DOM 객체 삭제

-  $(selector).remove() 모든 요소를 삭제

-  $(selector).empty() 모든 요소, 하위 자식요소까지 삭제

 

-  DOM 객체 삽입

-  이미 존재하는 객체에 다른 객체 삽입

-  $(A).append(객체) A의 자식 맨 뒤에 객체 삽입

-  $(A).prepend(객체) A의 자식 맨 앞에 객체 삽입

-  $(A).after(객체) A의 형제 바로 앞에 객체 삽입

-  $(A).before(객체) A의 형제 바로 뒤에 객체 삽입

-  appendTo, prependTo, insertAfter, insertBefore : A와 B의 입장이 반대

-  $(B).appendTo(A);

 

 

5. JQuery Event

 

-  이벤트 핸들러를 할당,해제하는 메소드 제공

-  click함수로 클릭 처리 등

 

Event bind하기

-  bind(eventType, data, listener)

-  eventType : 핸들러를 할당할 이벤트 종류

-  data : 핸들러 함수에서 사용할 data

-  listener: 수행되는 핸들러 함수

 

-  unbind(eventType, handler)

-  bind된 핸들러 제거

 

-  on(eventType, listener)

-  동적 DOM 객체에도 적용 가능

-  기존 연결 방식은 동적 DOM 객체에는 적용되지 못한다

-  $().on("click", selector, function() { } );

-  selector에 해당하는 DOM 객체들도 이벤트 바인드 가능

 

-  off()

-  이벤트 등록 제거

 

Simple Event Bind

-  on함수 대신, eventType을 직접 사용할 수 있다

-  .on("click"~~)는

-  .click(~~)와 같다

 

MouseEvent

이벤트 발생조건
click 마우스로 클릭 시
dbclick 더블클릭
mousedown 버튼 누를 때
mouseup 버튼 뗄 때
mouseenter 커서가 들어올 때
mouseleave 커서가 나갈 때
mousemove 마우스가 움직일 때
mouseout 마우스가 벗어날 때
mouseover 마우스가 들어올 때

 

Keyboard Event

이벤트 발생조건
keydown 버튼 누를 때
keypress 글자 입력시
keyup 버튼 뗄 때

-  버튼 누름 -> 글자 입력됨 -> 버튼 떼짐 의 순서로 발생한다

 

Window Event

이벤트 발생조건
ready DOM 객체가 준비되면
load 윈도우를 호출시
unload 윈도우 닫을 때
resize 윈도우 크기 변화시
scroll 스크롤시
error 에러발생시

 

Input Event

이벤트 발생조건
change 입력 내용 변경시
focusin 포커스가 들어갈 때 (버블링)
focusout 포커스가 나갈 때 (버블링)
focus 포커스가 들어갈 때
blur 포커스가 나갈 때
select 입력 선택할 때
submit submit시
reset reset시

 

버블링이란?

-  div - ul - li 구조의 태그가 있다고 할 때, 버블링이 적용되어 있으면

-  li에서 발생한 이벤트에 대해 ul -> div의 핸들러도 처리를 한다

-  ex) li에 포커스 발생시, ul div의 포커스 핸들러도 처리하는 식

 

'WEB 공부' 카테고리의 다른 글

[WEB] Backend - EL, JSTL  (0) 2021.05.16
[WEB] Backend - Servlet, JSP  (0) 2021.05.16
[JAVA] JDBC  (0) 2021.05.16
[WEB] Frontend - Bootstrap  (0) 2021.05.15
[WEB] Frontend - AJAX  (0) 2021.05.15
[WEB] Frontend - JavaScript, WebBrowser  (0) 2021.05.08
[WEB] Frontend - HTML, CSS  (0) 2021.05.08

+ Recent posts