1. 개요
1) jQuery란?
- 기존의 자바스크립트 언어만으로 구현하기에 복잡했던 구문작성들을 간소화하기 위해 "존 레식"에 의해 개발된
JavaScript기반의 라이브러리 (유용한 기능들의 모음집)
즉, JavaScript언어로 유용한 함수나 내용들이 이미 만들어져 있는(정의되어있는) 모음집
- jQuery의 장점
1) DOM요소와 관련된 스크립트를 보다 쉽게 구현할 수 있다.
2) AJAX(비동기식 통신), 이벤트 처리 등 폭 넓게 지원한다.
3) jQuery와 관련된 확장 플러그인, 오픈 API 등을 지원한다.
=> 적은 양의 코드로 빠르고, 풍부한 기능을 제공함 == 생산성 향상
2) jQuery 라이브러리 연결방법
head태그 내부에 script태그로 jQuery관련 .js파일 가져오기
오프라인 / 온라인 방식이 있음
- jQuery공식 사이트 : https://jquery.com
<a href="https://jquery.com" target="_blank">jQuery 공식 사이트</a>
- UnCompressed : 개발자를 위한
개발자같은 사람이 보기 쉽도록 주석, 코드 정렬 등을 활용해서 가시성(가독성)을 유지하는 파일
- Compressed : 배포
주석, 들여쓰기, 띄어쓰기 등을 최소화해서 파일 용량을 줄인 버전
1) jquery 라이브러리 파일을 직접 다운로드 받은 후 경로지정(오프라인 방식)
- .js파일을 다운로드받아 저장한 후 저장된 파일의 경로를 지정한다.
<script src="resources/script/jquery-3.6.1.min.js"></script>
2) CDN(Content Delivery Network)을 통한 연결(온라인 방식)
- 라이브러리를 제공하는 사이트의 url을 제시해서 파일 경로를 지정하는 방식
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.1/jquery.min.js"></script>
3) jQuery 구문 작성하기
우리는 기본적으로 jQuery구문으로 DOM요소를 다룰 것이기 때문에
jQuery 명령은 문서상에서 요소들이 전부 다 로드된 후에 실행되어야 함 => window.onload
- 순수 자바스크립트에서 해당 내용
[표현법]
window.onload = function(){
실행내용;
}
onload 함수 : 페이지가 다 로딩되면 자동으로 한 번 실행되는 함수
해당 HTML문서의 요소들이 다 로드되고, 연동되어 있는 외부문서들도
다 로드된다음에 실행되는 특징을 갖는다.
window.onload는 해당 HTML 문서에서 단 한 번만 작성이 가능하다.
<script>
window.onload = function(){
console.log('안녕하세요.'); //문서 로딩이 끝나면 실행
};
window.onload = function(){
console.log('반갑습니다.'); //위에 문장이 무시된 채 마지막 문장만 실행됨
};
</script>
- jQuery에서의 해당 내용은 3가지 구문으로 제공
[표현법]
(1)
jQuery(document).ready(function(){
실행내용;
})
jQuery(document).ready(function(){
console.log('문서 읽어들이기 완료');
});
(2)
$(document).ready(function(){
실행내용;
})
ㅍ
$ : jQuery키워드를 나타냄
jQuery에서 해당 function은 HTML문서 안에 있는 DOM요소들만 로드되면 바로 실행됨
여러 번 기술 가능. 횟수제한없음
$(document).ready(function(){
console.log('문서 읽어들이기 완료2');
});
(3)
$(function(){
실행내용;
})
$(function(){
console.log('문서 읽어들이기 완료3');
});
- h3요소를 선택해서 배경색을 yellow로 변경
> 순수 자바 스크립트 방식
var h3Arr = document.getElementsByTagName('h3'); //[h3, h3, h3]
for(var i = 0; i<h3Arr.length; i++){
h3Arr[i].style.backgroundColor = 'yellow';
};
> jQuery 방식
$('h3').css('background', 'yellow');
$('선택자'): 해당 요소를 선택하겠다.
.css() : 선택된 요소들의 스타일과 관련된 기능 수행
> 순수 JavaScript
- pre태그에 대한 글자색을 red로 바꾸기
var preArr = document.getElementsByTagName('pre');
for(var i = 0; i<preArr; i++){
preArr[i].style.color = 'red';
}
> jQuery 방식
$('pre').css('color', 'red');
2. 기본선택자
1) 아이디 선택자
: 특정 고유한 아이디 속성값을 가진 요소 단 하나만을 선택하고자 할 때 사용
<h1 id="id1">ID1</h1>
<h2 id="id2">ID2</h2>
> 순수 자바 스크립트 : 선택된 요소객체의 속성에 접근해서 값을 변경
document.getElementById('아이디값'); > 대입을 통해 innerHTML / innerText
document.getElementById('id1').style.color = 'red';
document.getElementById('id1').innerHTML = '안녕';
> jQuery방식 : $('#아이디명') 선택된 요소 객체에 메소드를 활용해서 값을 변경
$('#id2').css('color', 'pink');
$('#id2').html('잘가');
.html() : innerHTML과 관련된 기능을 수행하는 메소드
2) 태그 선택자
: 해당 태그 요소를 전부 다 가져오고자 할 때 사용
<p>Java</p>
<p>Oracle</p>
<p>JDBC</p>
<h5>HTML</h5>
<h5>CSS</h5>
<h5>JavaScript</h5>
> 순수 자바스크립트 방식 : document.getElementsByTagName('태그명'); => 배열형태
var p = document.getElementsByTagName('p'); //[p,p,p,...]
//p는 배열 배열 안에 p요소에게 스타일부여
for(var i = 0; i<p.length; i++){
p[i].style.color = 'red';
}
> jQuery 방식 : $('태그명')
$('h5').css('color', 'blue');
$('p, h3, #id1').css('backgroundColor', 'pink');
3) 클래스 선택자
: 특정 클래스 속성값을 가진 요소들을 선택하고자 할 때 사용
<h1 class="item">Class1</h1>
<h1 class="item select">Class2</h1>
<h1 class="item select">Class3</h1>
> 순수 자바스크립트 방식 : document.getElementsByClassName('클래스속성값'); => 배열
대상 = 클래스 속성 값이 item인 요소들
글자색 = orangered
클릭시 alert
var items = document.getElementsByClassName('item');
for(var i = 0; i<items.length; i++){
items[i].style.color = 'orangered';
items[i].onclick = function(){
alert('성공');
};
};
> jQuery 방식 : $('.클래스속성값')
$('.select').css('background', 'lightgray');
$('.select').click(function(){
console.log('h1 클릭');
});
- .click() : 클릭이벤트와 관련된 기능 수행
< 정리 >
순수 JavaScript 방식 | jQuery 방식 |
document.getElementById('아이디속성값')
|
$('#아이디속성값')
|
document.getElementsByTagName('태그명')
|
$('태그명')
|
document.getElementsByClassName('클래스명')
|
$('.클래스명')
|
순수 JavaScript 방식 | jQuery 방식 | |
속성에 접근해서 대입하는 방식 | 메소드를 호출하는 방식 | |
Style | .style.스타일속성 = '변경할값'; | .css('스타일속성', '변경할값'); |
Content | .innerHTML = '변경할값'; | .html('변경할 값'); |
Event | .on이벤트명 = function(){} | .이벤트명(function(){}); |
3. 추가적인 선택자
1) 자손선택자(>)와 후손선택자( )
- 자손선택자 : >
- 후손선택자 : (공백)
<div style="border: 1px solid pink;">
<ul> div의 자손요소1이면서 li의 부모요소이면서 h3의 조상요소
<li>div의 후손이면서 ul의 자손요소</li>
<li>div의 후손이면서 ul의 자손요소2</li>
<li class="ch">div의 후손이면서 ul의 자손요소3</li>
<li class="ch">div의 후손이면서 ul의 자손요소4</li>
<li> div의 후손이면서 ul자손요소5이면서 h3의 부모요소
<h3>div/ul의 후손이면서 li의 자손요소1</h3>
<h4>div/ul의 후손이면서 li의 자손요소2</h4>
</li>
</ul>
<li>
<h3>예시1</h3>
</li>
<li>
<h4>예시3</h4>
</li>
<li>
<ul>
<h4>예시2</h4>
</ul>
</li>
<h3>div의 자손요소2</h3>
<h3 class="ch">div의 자손요소3</h3>
</div>
<script>
$(function(){
$('div>h3').css('color', 'blue');
$('div h3').css('background', 'violet');
$('li>h3').css('color', 'white');
$('ul h3').css('color', 'black');
$('ul>li>h4').css('color', 'red');
$('ul>.ch').css('background', 'yellow');
$('li.ch').css('color', 'yellowgreen');
})
</script>
- div의 자손 h3에 스타일 속성부여
- div의 후손 h3에 스타일 속성부여
- li의 자손 h3에게 스타일 속성부여
- ul의 후손 h3에게 스타일 속성부여
- ul의 자손, li의 자손, h4에게 스타일 속성부여
- ul의 자손 class ch에게 스타일 속성부여
- li의 클래스 ch에게 스타일 속성부여
2) 속성선택자
선택자[속성] : 특정속성을 가지고 있는 모든 요소 선택
선택자[속성-속성값] ***: 속성값이 특정값과 "일치"하는 모든 요소 선택
선택자[속성~=속성값] : 속성값에 특정값을 "포함"하는 요소 선택(공백기준)
선택자[속성^=속성값] : 속성값이 특정값으로 "시작"하는 요소 선택
선택자[속성$=속성값] : 속성값이 특정값으로 "끝"나는 요소 선택
선택자[속성*=속성값] : 속성값에 특정값을 "포함"하는 요소 선택
<input type="text"> <br>
<input type="number" class="test test3 test4 test1"> <br>
<input type="radio"> <br>
<input type="checkbox"> <br>
<input type="button" value="button"class="test2"> <br>
- val() : value속성과 관련된 기능 수행 (getter/setter)
$('input[class~=test]').val('1234');
클래스가 test를 포함하는 요소 value에 1234 입력(setter)
- attr() : 그 외 속성들과 관련된 기능 수행
$('input[type^=ra]').attr('checked', true);
$('input[type$=box]').attr('checked', true);
input의 type속성이 ra로 시작하는 요소에 cheked옵션 부여
input의 type속성이 ra로 끝나는 요소에 cheked옵션 부여
- 메소드 체이닝 : 요소.css가 먼저 실행되면 다시 실행된 결과의 요소가 돌아옴(반환) 다시 그 요소에 접근해 css, val실행
$('input[class*=st2]').css('width', '50px').css('height', '50px').val('button');
3) 입력양식선택자
(input태그 type속성 따라서도 요소 선택이가능)
[표현법]
: type속성값
: text, : radio, :number, :checkbox...
텍스트상자 : <input type="text"> <br>
일반버튼 : <input type="button"> <br>
체크박스 : <input type="checkbox"> <br>
첨부파일 : <input type="file"> <br>
비밀번호 : <input type="password"> <br>
라디오버튼 : <input type="radio"> <br>
초기화버튼 : <input type="reset"> <br>
제출 : <input type="submit"> <br>
제출2 : <input type="submit"> <br>
$(':button').css({width:'200px', height: '200px'}).val('big');
- 부여하고자 하는 스타일에 대해 "객체 형태"로 묶어서 쓰는 것도 가능함.
- 예시 )
$(':checkbox').attr('checked', true);
$(':file').css('background', 'yellow');
$(':password').css('background', 'yellowgreen');
$(':radio').attr('checked', true).css({width: '50px', height: '50px'});
- 객체 형태로 작성할 경우 가독성을 쉽게 하기 위해 보통 들여쓰기 함.
$(':reset').css({
background:'blue',
color:'white',
border: 'none'});
- 비밀번호 입력란에 작성한 값을 alert창에 띄워보기
val() : 인자값 없이 메소드를 호출하면 해당 값을 불러오는 역할
→ setter, getter의 역할을 동시에 수행함
- 비밀번호 입력란에 작성한 값을 경고창에 띄워보기
$(':submit').click(function(){
alert($(':password').val());
});
< mouseenter : 요소의 경계 안으로 들어갈 때 >
- 현재 이벤트가 발생한 이벤트 타켓 요소에 접근하는 방법
window.event.target == e.target == this
$(":submit").mouseenter(function(){
$(':submit').css('background', 'pink');
this.css('background', 'pink');
$(this).css('background', 'pink');
jQuery 선택자로 바꿔줌 => 인라인방식으로 스타일
* 고급기술 : 직접 css()호출해서 스타일을 부여하는 것이 아니라
클래스 속성값을 추가해서 이미 정의된 스타일 입히기
- 미리 head영역의 style태그에 class선택자로 스타일 지정
<style>
.pinkStyle{
background-color: pink;
}
</style>
> 자바스크립트 방식
btn3.classList.add('style');
btn3.classList.remove('style');
> jQuery
$(this).addClass('pinkStyle');
$(this).addClass('추가하고싶은 클래스 속성값');
- .addClass() : 선택된 요소에 클래스 속성값을 추가해주는 메소드
< mouseout : 요소의 경계 밖으로 나갈 때 >
$(':submit').mouseout(function(){
$(this).removeClass('pinkStyle');
});
< mouseenter + mouseout: hover > : jQuery에도 hover메소드 존재
$(':submit').hover(function(){
$(this).addClass('pinkStyle');
}, function(){
$(this).removeClass('pinkStyle');
});
3) 상태선택자
- checked. selected. enabled, disabled
(1) checked 상태선택자(radio, checkbox)
체크되어있는 입력양식 태그를 선택
$('input:checked')
취미 :
<input type="checkbox" name="hobby" value="영화보기">영화보기
<input type="checkbox" name="hobby" value="게임하기">게임하기
<input type="checkbox" name="hobby" value="산책하기">산책하기
<br>
<button id="btn1">취미가 무엇인가요?</button>
- 버튼 클릭 시 현재 checked된 요소만 선택해서 스타일 부여
$(function(){
$('#btn1').click(function(){
$('input:checked').css({width: '50px', height: '50px'})
- 버튼 클릭 시 현재 checked된 요소만 선택해서 alert창으로
"당신의 취미는 XX XX XX 입니다. 형식 출력
> 자바스크립트 방식
var hobby = document.getElementsByName('hobby')
var checkedItem = '';
for(var i = 0; i<hobby.length; i++){
if(hobby[i].checked){
checkedItem += hobby[i].value + ' ';
}
}
alert('당신의 취미는 ' + checkedItem + '입니다.');
> jQuery 방식
str = '';
$('input[name=hobby]').filter(':checked').each(function(){
str += $(this).val() + ' ';
});
console.log( str );
==> 왜 출력이 안되지 ?
(2) selected 상태 선택자(select>option)
option 요소 객체 중 선택된 태그를 선택
$('option:selected')
지역 :
<select name="location">
<option value="X">선택안함</option>
<option value="NY">남양주</option>
<option value="GD">강원도</option>
<option value="BS">부산</option>
</select>
<button onclick="test();">확인</button>
선택한 지역 : <label id="result">없음</label>
* url에 location=value /
만약 value값을 적지 않았다면 content값이 value로
console.log($('option:selected').val());
console.log($('option:selected').html());
$('#result').html(($('option:selected')));
- 자바스크립트와 jQuery 함께 사용 가능
document.getElementById('result').innerHTML = $('option:selected').html();
(3) enabled, disabled 상태(input, button, textarea...)
활성화 / 비활성화된 요소 선택
: enabled
: disabled
<div id="wrap">
활성화 텍스트 상자 : <input type="text"> <br>
비활성화 텍스트 상자 : <input type="text" disabled> <br>
활성화 버튼 : <input type="button"> <br>
비활성화 버튼 : <input type="button" disabled> <br>
</div>
-각 상태에 스타일 부여
$(function(){
$('#wrap>:enabled').css('background', 'yellowgreen');
$('#wrap>:disabled').css('background', 'greenyellow');
});
4. 필터링 관련 선택자
1) 필터 관련 선택자
- 테이블 생성
<table border="1">
<tr>
<td>이름</td>
<td>MBTI</td>
<td>혈액형</td>
</tr>
<tr>
<td>홍길동</td>
<td>ENTP</td>
<td>B형</td>
</tr>
<tr>
<td>이순신</td>
<td>JDBC</td>
<td>A형</td>
</tr>
<tr>
<td>안철수</td>
<td>INFP</td>
<td>AB형</td>
</tr>
<tr>
<td colspan="2">총인원</td>
<td>3명</td>
</tr>
</table>
(1) first : 첫번째 요소를 의미
$(function(){
$('tr:first').css('background', 'black').css('color', 'white')
(2) last : 마지막 요소를 의미
$('tr:last').css({background:'orangered', color:'white'});
(3) even : 짝수번째 요소 (시작이 0부터)
$('tr:even').css('background', 'gray');
(4) odd : 홀수번째 요소 (시작이 0부터)
$('tr:odd').css('background', 'yellowgreen');
2) 필터 관련 메소드
기준이 되는 요소 중에서 특정 요소만을 걸러서 선택해주는 메소드
first(), last(), filter(), not(), eq()
<h4 class="test">test-1</h4>
<h4 class="test">test-2</h4>
<h4 class="test">test-3</h4>
<h4 class="test">test-4</h4>
<h4>test-5</h4>
<h4 class="test">test-6</h4>
(1) .first() : 기준 중에서 가장 첫 번째를 선택
$(function(){
$('h4').first().css('font-size', '20px');
(2) .last() : 기준 중에서 가장 마지막을 선택
$('h4').last().css('font-size', '50px');
(3) .filter('선택자') : 기준 중에서 해당 선택자만 선택
$('h4').filter('.test').html('테스트');
(4) .not('선택자') : 기준중에서 해당 선택자가 아닌 것만 선택
$('h4').not('.test').css('color', 'skyblue');
(5) .eq(위치) : 0부터 시작, 몇번째 요소 선택 ** 중요
$('h4').eq(0).text('<b>eq(0)선택됨</b>');
* text() : 선택된 요소의 innertText와 관련된 기능을 수행
'클라우드 융합 Full-stack 웹 개발자 양성과정 > HTML, CSS, JavaScript, j-Query' 카테고리의 다른 글
j-Query - 응용예시, 이벤트, 시각적인 효과 메소드 (0) | 2022.11.02 |
---|---|
j-Query - 탐회(순회메소드_조상, 자손, 동위)메소드, content영역 관련 메소드, 요소생성 및 제거, 추가적인 메소드 (0) | 2022.11.02 |
JavaScript - 요소가져오기(접근하기), 변수와 자료형, 문자열과 숫자, 배열, 함수, 객체1, 객체2, window객체, 이벤트, 정규표현식 (0) | 2022.10.24 |
JavaScript - 개요, 데이터 입출력 (0) | 2022.10.24 |
CSS - 화면구조잡기(기본, 실습, 상세구조, 세부구조), 실습 (0) | 2022.10.19 |