JQuery는 자바스크립트의 오픈 라이선스 라이브러리 중 하나다. 자바스크립트 기본 문법으로서 내장된 게 아니라 script로 소스를 연결해야 제이쿼리 문법을 사용할 수 있다.
<script
src="https://code.jquery.com/jquery-3.7.1.min.js"
integrity="sha256-/JqT3SQfawRcv/BIHPThkBvs0OEvtFFmqPF/lYI/Cxo="
crossorigin="anonymous">
</script>
📖 라이브러리?
개발자가 매번 코드를 작성할 필요가 없도록 자주 쓰는 함수, 객체 등의 자원을 모아놓은 묶음이다. 도서관의 수많은 서적이 주제별로 분류되었듯 쓰임에 따라 프로그래밍 언어에서 사용할 수 있는 다양한 라이브러리가 존재한다.
document.get~~ / document.querySelector(s)
를 $('선택자')
로 축약.🔍 대화형 처리?
prompt처럼 사용자의 입력에 즉각적으로 결과를 출력할 때.
$('선택자').동작함수();
HTML 문서에 접근할 때 document부터 선택할 방식까지 골라야 하는 자바스크립트의 단점을 간편하게 만들었다. 그리고 해당 선택자에 바로 함수를 명령하기 때문에 바로 동작과 연결 지을 수 있고, 어디에 무엇을 할 것인지도 명확하게 보인다.
예시 HTML
<style>
#container {
display: flex;
}
.box {
width: 100px;
height: 200px;
}
.yellow {
background-color: yellow;
}
.purple {
background-color: purple;
}
.beige {
background-color: beige;
}
.brown {
background-color: brown;
}
</style>
<input id="input" type="text" name="name" value="your name" />
<span id="greeting">Greeting</span>
<hr />
<div id="container">
<div class="container box purple" ></div>
<div class="container box beige" ></div>
<div class="container box brown" ></div>
</div>
<button type="button" onclick="useAppend()">append</button>
메서드 동작을 손쉽게 확인하려면, 메서드마다 버튼을 만들어 onclick에 해당 메서드가 담긴 함수를 실행해 보아도 된다.
<button type="button" onclick="메서드 이름()">버튼 이름</button>
선택자로 짚은 요소에 다음과 같은 동작을 부여할 수 있다.
.val()
function useVal() {
// id=input인 태그 선택하여 그 input의 value를 가져옴
const value = $("#input").val(); // 값을 가지고 올 땐 인자가 없다.
// in JS => const value = document.getElementById("input").value;
console.log(value);
}
// id=input인 태그 선택하여 그 input에 value를 등록
$("#input").val("Write your name plz");
// document.getElementById("input").value = '설정하고 싶은 값';
}
.css()
function useCss() {
//id가 greeting인 요소의 폰트 사이즈를 30으로 변경
$("#greeting").css("font-size", "30px");
//선택자 요소를 변수로 지정하여 두 가지 속성 부여
const span = $("#greeting");
span.css("font-size", "30px");
span.css("color", "blue");
/* in JS
* const greeting = document.getElementById("greeting");
* greeting.style = "font-size: 30px; color: blue;"
*/
}
.attr()
function useAttr () {
$("#input").val("")
$("#input").attr("placeholder", "이름을 입력하세요.");
//laceholder는 value가 없을 때 보이는 속성
/* in JS
* const input =
* document.getElementById("input").setAttributes("placeholder")
*/
}
.text()
function useText () {
// innerText와 같은 동작
$("#greeting").text("hallooooooooooo");
.html()
$('#greeting').html('Great to <b> see </b> you!');
.append()
function useAppend() {
$('#container').append
//백틱으로 묶기
(`<div class="yellow box"
style="background-color: yellow">
</div>`);
}
.prepend()
$('#container').prepend(`<div class="box yellow"</div>`)
.before()
$("#container").before(`<div class="box yellow"></div>`);
.after()
$("#container").after(`<div class="box yellow"></div>`);
.remove()
$(".box.yellow").remove();
//yellow div 자식이 아무것도 없어서 empty는 불가
.empty()
$("#container").empty();
.parent()
console.log($("parent", $(".box.yellow").parent()));
//배열+가장 가까운 상위요소
.parents()
console.log("parents", $("#container").parents());
//배열+모든 상위요소
.next()
console.log("next", $(".box.yellow").next());
.prev()
console.log("prev",$(".box.yellow").prev());
.children()
console.log("children", $("#container").children());
.addClass()
$('.box.yellow').addClass('red');
.removeClass()
$('.box.yellow').removeClass('red');
.hasClass()
$('.box.yellow').hasClass('yellow');
.toggleClass()
$('.box.yellow').toggleClass('yellow');
class 조작, prepend(), append(), remove()
실습하면서 클래스를 넣고 뺄 수 있는 기능이 유용하다고 느꼈다. 공통부분은 하나의 클래스에 지정하고, 바뀔 부분만 각자의 클래스를 지정해 두기.
제이쿼리는 바닐라 자바스크립트보다 훨씬 간단하게 표현할 수 있어서 그만큼 코드를 읽고 해석하기 쉬워서 좋은 것 같다.
하나하나의 의미를 이론적으로 들었을 땐 아하 그렇구나 싶다가도 막상 무언가를 구현할 땐 뭐가 필요한지 고르는 것부터가 어렵다.
결론 : 매몰비용을 잊자..