jQuery
JavaScript로 미리 구현되어있는 라이브러리의 한 종류
jQuery 환경설정
1. 라이브러리 다운로드 방식 ▶️ http://jquery.com/ 에서 다운로드 한 후, src에 라이브러리 경로를 적어준다.
<script type = "text/javascript" src = "./javascript/jquery.js"></script>
2. CDN 방식 경로 설정
<script type = "text/javascript src = "http://code.jquery.com/jquery-최신버전.min.js></script>
jQuery 선택자
$('선택자')
▶️ $(): jQuery기능이 담긴 확장 집합(Wrapper Set)
jQuery('선택자') |
$('선택자') |
$('선택자')[index] $('선택자').get(index) |
$('선택자').메소드() |
문서 준비 핸들러
1. ready
//Lambda식 이용
$(document).ready(() => {
//함수 내용
});
//축약
$(function() {
//함수 내용
});
- 문서가 모두 준비된 후 실행할 내용 작성 ▶️ 문서준비(= DOM Tree 로드)되기 전 스크립트 실행 방지
2. load
$(window).load ( () => {
//함수내용
});
- 문서가 로드되기 전 스크립트가 실행되는 것을 방지 ▶️ 문서 안의 모든 프레임, 객체, 이미지 등 외부 자원 로드 후 실행
📌 결론: $(document).ready( function() {});이 $(windows).load( function() {});보다 빠르게 실행된다.
💡 <script>의 위치에 따라 문서 준비 핸들러 사용
- <script>가 header에 위치한 경우: 문서 준비 핸들러 안에 javascript를 작성해야함
- <script>가 body에 위치한 경우: 문서 준비 핸들러를 사용하지 않아도 가능
선택자
1. 기본선택자
//전체
$('*')
//태그
$('p') //<p></p>, <li></li> 등 태그
//아이디
$('#id')
//클래스
$('.sampleClassName')
//자기자신
$(this)
> '' 대신 "" 사용 가능
2. 속성선택자
$('선택자[속성선택자]') //선택자 생략 시 *(전체) 선택
// E = 선택자
$('E[attr]') //속성 attr을 가지는 모든 E 요소
$('[id]') // id 속성을 가진 모든 엘리먼트 선택
$('E[attr=val]') //값이 val인 속성을 가지는 모든 E 요소
$('input[type=text]') //input 태그 중, type이 text인 속성 선택
$('E[attr!=val]') //값이 val가 아닌 속성
$('E[attr^=val]') //val로 시작하는 속성
$('E[attr$=val]') //val로 종료되는 속성
$('E[attr*=val]') //val이 포함되는 속성
3. 선택자 조합
//자손과 자식
$('A B') // A의 모든 자손들 중 B에 해당 (A 밑에 있는 모든 태그들 중 선택, depth >= 1 이상)
$('A>B') // A의 자식들 중 B에 해당 (A 바로 밑 자식 중 B 선택, depth = 1)
// 형제
$('A+B') // A 뒤에 위치하는 형제 B 엘리먼트 (A와 B는 같은 레벨, B가 뒤에 서술)
$('A~B') // A의 형제 B 엘리먼트 (A와 B의 위치 상관X)
// 기타
$('A.B') // A에 해당하는 엘리먼트 중 class 속성명이 B
$('A, B, C') // A or B or C에 해당하는 모든 엘리먼트
4. 위치 기반 필터 선택자
$('선택자:필터선택자')
$('E:first') //E의 첫번째 엘리먼트
$('E:last') //E의 마지막 엘리먼트
$('E:first-child') //E의 첫번째 자식 엘리먼트
$('E:nth-child(n)') //E의 n번째 자식 엘리먼트
$('E:even') //E의 짝수번째 엘리먼트
$('E:odd') //E의 홀수번째 엘리먼트
$('E:eq(n)') // E의 n-1번째 엘리먼트
$('E:gt(n)') //E의 n번째(포함X) 이후의 엘리먼트
> eq(n)을 많이 쓴다.
5. 필터 선택자
$(':필터선택자')
$(':text'), $(':checkbox'), ... : 속성이 선택자 이름과 동일한 form 컨트롤
$(':text') //<input type = "text" />
$(':input') //<input>. <textarea>, <select>, 모든 버튼 요소
$(':button') //button, submit, reset 등 모든 버튼 요소
$(':enabled') //활성화 된 form 컨트롤
$(':disabled') //비활성화 된 form 컨트롤
$(':checked') //radio, checkbox 중 체크된 요소들
$(':selected') //옵션 요소 중 선택된 요소들
jQuery 함수
$('선택자').length
- 길이 return
$('선택자').get(index)
- index 위치의 엘리먼트 반환, 음수 시 뒤에서부터
- 인덱스 생략 시, 모든 엘리먼트 반환
$('선택자').each( function(){
$(this).css({ /*내용*/ }) //this를 이용해 엘리먼트 접근
});
- 컬렉션을 순회하면서 모든 엘리먼트에 콜백 함수 호출
ex) $('li ul li').each(function() ~ : 모든 li ul li에 첩근
$('선택자').attr('속성명')
- 속성명에 해당하는 값 반환
- 첫 번째 엘리먼트를 대상으로 수행
$('선택자').attr('속성명', '값)
- 속성명에 해당하는 값을 추가(존재하지 않을 때) 또는 변경(이미 존재할 때)
- 모든 엘리먼트를 대상으로 수행
$('선택자').removeAttr('속성명')
- 속성값이 존재하면 삭제
필터링 메소드
$('선택자').filter('필터선택자FE') | 필터선택자(FE)에 해당하는 요소 선택 |
$('E').not('FE') | FE에 해당하는 요소 제외하고 선택 |
$('E').has('FE') | FE에 해당하는 자손 엘리먼트(E)를 가지고 있는 E의 집합 선택 |
$('E').eq(index) | 인덱스에 해당하는 위치에 있는 E 반환 |
$('E').first() $('E').last() |
첫 번째 또는 마지막 엘리먼트를 객체로 반환 |
$('E').slice(start, end) | start 인덱스부터 end 인덱스 사이의 객체 반환 |
클래스 속성 메소드
$('E').hasClass('클래스명') | boolean 값으로 리턴 클래스명을 가지는 E 존재 여부 반환 |
$('E').addClass('클래스명') | 모든 E에 인자로 작성한 클래스명 추가 |
$('E').removeClass('클래스명') | 모든 E의 클래스 제거 |
$('E').toggleClass('클래스명') | 기존 클래스명과 인자로 작성한 클래스명 두 개의 클래스를 번갈아가며 적용 |
jQuery 이벤트
이벤트 바인딩
- 이벤트 핸들러 추가
on('이벤트', function() { });
$('#button1').on('click', function(){
console.log("클릭");
});
- 이벤트 핸들러 제거
off('이벤트');
$('button1').off(); //이벤트 전체 제거
$('button1').off('click'); //클릭 이벤트 제거
마우스 이벤트
- 마우스와 관련된 메소드
이벤트명( function() {});
// 마우스 클릭
$('div').click( function() {
//함수작성
});
// 마우스 더블 클릭
$('div').dblclick(){
});
// 해당 영역에 마우스 포인터 들어왔을 때
$('div').mouseover(){
});
// 해당 영역에서 마우스 포인터가 벗어났을 때
$('div').mouseleave(){
});
form 이벤트
- 폼 이벤트에 대한 메소드
// 포커스 제거
$('#text').blur( function(){
});
// 값이 변할 때
$('#text').change( function(){
});
// 포커스를 받을 때
$('#text').focus( function(){
});
// 특정 필드 선택
$('#text').select( function(){
});
// submit 버튼 클릭
$('#text').submit( function(){
});
jQuery DOM 조작
- DOM 엘리먼트 생성
// 엘리먼트 생성 = document.createElement('div')
$('HTML태그');
$(' <div> text와 함께 엘리먼트 생성 </div>');
// 엘리먼트 삽입
// 자식 삽입
$('HTML태그').appendTo('선택자'); //새로운 태그 생성 후 특정 엘리먼트 삽입
$('<li>마지막</li>').appendTo('ol');
$('선택자').append('HTML태그'); // 선택자의 자식 노드 중 가장 마지막 노드에 삽입
$('ol').append('<li> 마지막 </li>');
$('HTML태그').prependTo('선택자'); //새로운 태그 생성 후 특정 엘리먼트에 삽입
$('<li>첫번째</li>').prependTo('ol');
$('선택자').prepend('HTML태그'); //선택자의 자식 노드 중 제일 처음에 삽입
$('ol').prepend('<li>첫번째</li>');
// 형제 삽입
$('HTML태그').insertBefore('선택자'); //특정 엘리먼트 앞에 삽입
$('선택자').before('HTML태그'); //특정 엘리먼트 앞에 삽입
$('HTML태그').insertAfter('선택자'); //특정 엘리먼트 뒤에 삽입
$('선택자').after('HTML태그'); //특정 엘리먼트 뒤에 삽입
// 엘리먼트 복제
$('HTML태그').clone('선택자').appendTo('선택자'); //HTML태그를 복제하여 특정 엘리먼트에 삽입
$('#item').clone.appendTo('#subitem');
- DOM 엘리먼트 변경
// 선택자의 엘리먼트의 HTML 코드를 새롭게 대체
$('선택자').html('HTML태그')
var htmlCode = $('#content').html(); //파라미터 없을 시, 하위 HTML 반환
$('#contents').html('<p> 내용 대체 </p>');
// 선택자의 엘리먼트의 HTML 코드를 새롭게 대체
$('선택자').text('HTML태그')
var htmlCode = $('#content').text(); //파라미터 없을 시, 하위 TEXT 반환
$('#content').text('<p> 내용 대체 </p>');
// 값 가져오기
$('선택자').val('문자열')
var val = $('#id').val(); // 파라미터 없을 시, 값 반환
$('#id').val('값 대체');
> 파라미터가 없으면 해당하는 값을 반환한다.
- DOM 엘리먼트 제거
$('선택자').remove(); // 선택자에 해당하는 엘리먼트를 포함하여 모든 자식 제거
$('선택자').empty(); // 선택자에 해당하는 엘리먼트를 제외하고 모든 자식 제거
- DOM 탐색
//탐색 메소드 뒤에는 filter를 넣을 수 있음
// ex) children('p') : p 태그를 가진 자식 선택
$(this).children(); //모든 자식 선택, depth = 1 (자식만)
$(this).find(); //모든 자손 중 일치하는 것 선택, depth >= 1 (자식 및 자손 포함)
$(this).next(); //다음 형제 선택
$(this).nextAll(); //다음에 오는 모든 형제 선택
$(this).prev(); //이전 형제 선택
$(this).prevAll(); //이전에 오는 모든 형제 선택
$(this).siblings(); //자신을 제외한 형제 엘리먼트 선택
$(this).parent(); //부모 선택
$(this).parents(); //모든 조상 선택
예시
children() | 1-3-1, 1-3-2, 1-3-3 |
find() | 1-3-1, 1-3-2, 1-3-2-1, 1-3-3 |
next() | 1-4 |
nextAll() | 1-4, 1-5 |
prev() | 1-2 |
prevAll() | 1-1, 1-2 |
siblings() | 1-1, 1-2, 1-4, 1-5 |
parent() | 1 |
parents() | root, 1 |
'IT > CS' 카테고리의 다른 글
[Architecture] MSA (0) | 2021.09.28 |
---|---|
[Java] Lambda expression (0) | 2021.09.28 |
[JavaScript] 배열 및 함수 (0) | 2021.08.20 |
[JavaScript] ES6 자바스크립트 특징 (0) | 2021.08.20 |
[DB] 절차형 SQL (0) | 2021.08.13 |