
자바스크립트 언어만으로 구현하기에 복잡했던 구문들을 간소화하기 위해 개발된 자바스크립트 기반의 라이브러리이다.
DOM요소와 관련된 스크립트를 쉽게 구현해 놨으며, AJAX(비동기 통신), 이벤트처리, 확장 플러그인 및 오픈 API 등 각종 편의성 기능을 제공한다.
1. 내부방식 : jQuery 라이브러리를 직접 다운받아 script 태그 내 src경로를 로컬파일로 작성하는 방식
jQuery 홈페이지에서 다운로드 클릭 후 jQuery 라이브러리를 복사 -> js파일로 저장
<script src="jQuery 파일 경로"></script>
2. 외부방식(CDN 방식) : Content Delivery Network 상에서 직접 다운로드하는 방식으로 파일을 다운받지 않아도 사용 가능하다.
jQuery 홈페이지 jQuery CDN 아래 other CDNs에서 google CDN을 사용했다. jQeury 3.x 스니펫 스크립트를 복사하여 사용할 html에 붙여넣기
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
jQuery는 기본적으로 $ 기호 및 jQuery를 붙여서 사용한다.($만 쓰는듯 ㅅㄱ)
자바스크립트에서는 document.querySelector('선택자')를 쓴 반면 jQuery에서는 $('선택자')로 압축하여 표현한다.
$('ul > li'); == document.querySelectorAll('ul > li');
jQuery 변수를 선언할 때는 변수명 앞에 $를 붙이는 것이 관례이다.
var $lis = $('ul >li');
HTML
<ul>
<li class="foo" id="bar1">안녕1</li>
<li class="foo" id="bar2">안녕2</li>
<li class="foo" id="bar3">안녕3</li>
<li id="bar4">안녕4</li>
<li id="bar5">안녕5</li>
</ul>
<input type="button" value="tag" onclick="test1();">
jQuery script
<script>
function test1() {
var $lis = $('ul > li');
$lis.css("color", "springgreen");
...
| 아래 tag 버튼을 클릭하여 html을 조작 | tag 버튼 클릭 1 |
|---|---|
![]() | ![]() |
| ul>li로 태그에 접근하여 css color 속성 변경 |
...
자바스크립트 방식으로 변경하는 방법
var lis = document.querySelectorAll('ul > li');
lis.forEach((element) => {
element.style.color = "tomato";
});
$('.foo').css('font-size', '2em');
var $bar1 = $('#bar1');
var $bar1_;
$bar1_ = $bar1.css('text-decoration', 'underline');
console.log($bar1);
console.log($bar1_, $bar1 == $bar1_);
$('#bar1').css('font-size', '3em')
.css('background', 'deeppink')
.css('color','white');
}
</script>
| JS 방식으로 css 변경 | jQUery 메서드 체이닝으로 css 속성 변경 |
|---|---|
![]() | ![]() |
fieldset 생략
<input type="checkbox" name="menu" id="menu1" value="햄버거"><label for="menu1">햄버거</label>
<input type="checkbox" name="menu" id="menu2" value="교촌치킨"><label for="menu2">교촌치킨</label>
<input type="checkbox" name="menu" id="menu3" value="대창"><label for="menu3">대창</label>
<input type="checkbox" name="menu" id="menuAll" value="삼겹살"><label for="menuAll">삼겹살</label>
<input type="button" value="get | set" id="checkGetSet">
<input type="button" value="확인" id="checkValue">
<script>
$('[name=menu]').change(function(e) {
console.log(e);
console.log(this);
console.log(this.checked);
// 현재 객체의 속성 중 chcked 속성에 저장된 값을 getter하는 함수
console.log($(this).prop('checked'));
// setter : 현재 객체의 속성 중 checked 속성에 false를 대입해라
// console.log($(this).prop('checked', false));
// console.log($(this).val()); // getter: value에 매개변수없으면 getter
// console.log($(this).val("ㅋㅋㅋ")); // setter: val에 매개변수있으면 setter check한 value의 속성값을 ㅋㅋㅋ로 바꿈
});
위 필드셋 체크 시 아래와 같이 e와 this를 출력하면 서로 다른 객체값이 출력되는데 이는 JS와 jQuery의 객체가 서로 다름을 보여준다.
따라서 JS의 객체를 jQuery 문법으로 사용하려면 $(this) 형태로 $()를 붙여줘야 한다.
...
$('#menuAll').change(function(e) {
$('[name=menu]').prop('checked', this.checked); // this.checked // 현재 요소의 체크상태
});
$('#checkValue').click(function(e) {
//jQuery 방식 객체 순회
$('[name=menu]').each(function(index, element) { // js의 foreach함수와 유사한 jQuery식 each함수
// element == HTMLInputElement
console.log(index, element);
// element는 js객체이므로 jquery 함수 사용불가
// element.prop('checked', false);
$(element).prop('checked', false);
console.log(element.value, $(element).val());
})})
</script>
js의 속성은 property, HTML의 속성은 attribute이다.
HTML 태그 상에 기록된 속성을 가져오거나 설정할 경우 사용한다.
<img src="/resources/이미지경로.jpg" style="margin: 50px 20px; width: 300px; " >
$('img').click(function() {
console.log($(this).attr('src'), $(this).attr('style'))
console.dir(this);
console.log($(this).prop('src'))
$(this).attr('src','../resources/image/flower2.jpg');
});
| img onclick 전 | onclick 후 |
|---|---|
![]() | ![]() |
| console |
|---|
![]() |
각종 메서드를 활용할 html, 버튼 클릭 시 해당 메서드 실행
<div class="wrapper">
<p>안녕1</p>
<p>안녕2</p>
<p>안녕3</p>
<p>안녕4</p>
<p>안녕5</p>
<p>안녕6</p>
<p><a href="#">안녕7</a></p>
<p>안녕8</p>
<p>안녕9</p>
<p>안녕10</p>
</div>
<input type="button" value=":eq()" onclick="test2()">
<input type="button" value=":gt() :lt()" onclick="test3()">
<input type="button" value=":contains()" onclick="test4()">
<input type="button" value=":has()" onclick="test5()">
<input type="button" value=":not()" onclick="test6()">
<script>
function test2() {
$('.wrapper p:eq(3)').css('font-size','3em')
.css('color','blue');
$('.wrapper>p:nth-child(4)').css('font-size','3em')
.css('color','blue');
}
...
| 클릭 전 | 클릭 후 |
|---|---|
![]() | ![]() |
function test3() {
$('.wrapper p:gt(3)').css({
'font-size' : '3em',
'color' : 'blue'
});
$('.wrapper p:lt(3)').css({
'font-size' : '3em',
'color' : 'pink'
})
}
| 클릭 전 | 클릭 후 |
|---|---|
![]() | ![]() |
특정 문자열을 가진 태그요소를 조회
p태그 중 '안녕8'이라는 문자열을 가진 태그 요소 조회
function test4() {
$(".wrapper p:contains('안녕8')")
.css('text-decoration', 'line-through');
}
해당 selector를 가지고 있는 요소를 선택
p태그 중 a태그를 가지고 있는 요소 선택
function test5() {
$('.wrapper p:has(a)').css('background-color','lightgray');
}
해당 selector를 가지고 있지 않은 요소 선택
p 태그의 첫번째 요소를 제외한 나머지 요소의 css 변경
function test6() {
$('.wrapper p:not(:first-child)').css('color','green');
}
| :contains(문자열) | :has(선택자) | :not(선택자) |
|---|---|---|
![]() | ![]() | ![]() |
function test1() {
var $p = $('.wrapper>p');
var filteredP = $p.filter('.test');
console.log(filteredP);
var evenP = $p.filter(':even');
console.log(evenP);
var oddP = $p.filter(':odd');
console.log(oddP);

function test2() {
var $p = $('.wrapper>p');
console.log($p.first());
$p.last()
.css('font-size', '3em')
.css('color', 'springgreen');
| first() % last() |
|---|
![]() |