📃 요약
함수들의 묶음인 라이브러리이며 과거에 브라우저간 호환성을 유지하며 코딩하기 위해 전세계 개발자들에게 엄청난 인기를 끌었고 DOM 선택함수(바닐라 자바스크립트)보다 훨씬 간소하고 사용성이 좋음, 단점은 큰 라이브러리 사이즈와 성능이 바닐라 자바스크립트보다 떨어짐
요소 기술 :
– Basic : Jquery
📃 기술 구현
스펙 :
- vscode - js (es6)
📃 Jquery
- DOM 을 조작하는 유용한 js 함수들을 제공 - 함수(메소드) 체이닝을 사용해서 편리하게 조작함
일반 코딩 용어
- 라이브러리 : 유용한 함수들의 묶음으로 사용하면 코딩이 간소해짐 - 프레임워크 : 라이브러리보다 큰 묶음으로 일정 방식(규칙)으로 코딩을 강제하면서 일정 수준 코딩 품질을 높임, 코딩 자율성을 억제해서 개성 있는 사이트 구축에는 어려움이 있음 - 에러 : 코딩 시 비정상적으로 실행안됨 - 버그 : 코딩을 1차 완료해서 서비스했으나 서비스 중 일정 조건에서 에러 및 실행이 기대한대로 동작하지 않는 현상 - CDN : 라이브러리를 인터넷에서 실행시에 다운로드 받아 사용할 수 있게 만들어 놓은 사이트, 주로 http: 로 시작되는 주소로 되어 있음 예) 다운로드 주소만 link 함 - function(){} : 함수 정의 시 이름을 생략해서 정의할 수 있음 (익명함수), 주로 1회용으로 사용할 때 익명함수를 사용함 - React / Vue 에서는 jquery 사용을 추천하지 않음, 오히려 바닐라 자바스크립트를 사용할 것을 추천
JQuery 사용법
- 라이브러리를 설치 또는 cdn 링크를 추가해야 사용가능 - $(css선택자) : jquery 로 대상을 선택하면 동일한 태그를 가진 대상이 여러개가 있으면 여러개를 선택하고, 1개면 1개만 선택함 1) querySelector(), querySelectorAll() 2가지 기능을 모두 가지고 있음
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> </head> <body> <h1 id="title">제목</h1> <!-- TODO: jquery cdn : 인터넷 주소로 자동 다운로드 --> <script src="http://code.jquery.com/jquery-3.1.0.js"></script> <script src="./js/01_jq_selecter.js"></script> </body> </html>
$(function() { $(css선택자).jquery함수(속성, 값); }) // 또는 $(function() { let 변수 = $(css선택자) . 변수.jquery함수(속성, 값); // 변수 이용 가능 })
JQuery 는 바닐라 자바스크립트의 각 속성 및 함수에 해당하는 함수가 모두 존재하며 굉장히 많은 함수들로 이루어져 있음, 외우지 말고 코드를 찾아보며(구글링) 코딩할 것
📃 Jquery 주요 함수
Jquery 주요 함수
1) css()
- css 디자인을 변경하는 함수
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> </head> <body> <h1 id="title">제목</h1> <!-- jquery cdn : 인터넷 주소로 자동 다운로드 --> <script src="http://code.jquery.com/jquery-3.1.0.js"></script> <script src="./js/01_jq_selecter.js"></script> </body> </html>
사용법 : $(function() { // TODO: jquery 특징 : $(css선택자) // : 기본적으로 모든 태그가 선택됨 // vs querySelector() , querySelectorAll() $(css선택자).함수("속성명", "값"); }); 예) $(function() { $("#title").css("color", "skyblue"); });
2) css().css() : jQuery 함수(메소드) 체이닝
- jQuery 라이브러리는 함수를 연결해서 선택자에게 모두 효과를 적용할 수 있음 - 코딩이 짧아져서 코딩 효율성이 증가함
- 예제 : 배경색:#ff0, border:2px solid black 적용하기
사용법 : $(css선택자).함수().함수()...
예)
<!DOCTYPE html>
<html lang=”en”>
<head>
<meta charset=”UTF-8″>
<meta name=”viewport” content=”width=device-width, initial-scale=1.0″>
<title>Document</title>
</head>
<body>
<h1>제이쿼리</h1>
<h2 id=”tit”>선택자</h2>
<h3>직접선택자</h3>
<!-- jquery cdn --> <script src="http://code.jquery.com/jquery-3.1.0.js"></script> <script> $(function(){ // TODO: 메소드(함수) 체이닝 // 사용법 : $(css선택자).함수().함수()... $("#tit").css("background-color", "#ff0") .css("border", "2px solid black"); }) </script>
</body>
</html>
### 3) .children() : - 선택한 태그의 자식 태그들을 선택하는 함수 ```html 사용법 : $("css선택자") .children() .함수() <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> </head> <body> <div id="wrap"> <h1>인접 관계 선택자</h1> <p>내용1</p> <section> <h1>하위 요소 선택자</h1> <p>내용2</p> </section> </div> <!-- jquery cdn --> <script src="http://code.jquery.com/jquery-3.1.0.js"></script> <script> $(function () { // #wrap > section 아래 자식 태그들 선택하기 $("#wrap > section") .children() .css("background-color", "yellow") .css("border", "2px solid #f00"); }); </script> </body> </html>
4) html()
- innerHTML 과 동일한 효과를 나타내며 html 태그 효과를 적용해서 문자열을 가져오거나 변경하는 함수
- html 예제 :
<html>
<body>
<h1>안녕하세요</h1>
</body>
</html>
사용법 : $(“태그”).html(); - 태그의 사이에 문자열을 가져오기 사용법 : $(“태그”).html(“문자열”); - 태그의 사이에 문자열을 지정하기, 만약 기존에 문자열이 있으면 새로운 문자열로 수정됨 예) // h1 태그의 값을 가져오기 $(function() { let value = $(“h1”); //변수 사용 alert(value.html()); // 안녕하세요 출력 }); // 또는 $(function() { alert($(“h1”).html()); //변수 사용 않함, 안녕하세요 출력 }); // h1 태그의 값을 변경하기 $(function() { $(“h1”).html(“변경했어요”); //변수 사용 않함, 변경했어요 로 문자열 변경됨 });
5) val()
- input 태그의 value 값을 가져오거나 변경하는 함수
- html 예제 :
<html>
<body>
<input type=”text” id=”name” value=”안녕하세요” />
</body>
</html>
사용법 : $(“css선택자”).val() - css 선택자의 value 속성을 가져옴 - 주로 입력양식에 사용 사용법 : $(“css선택자”).val("문자열") - css 선택자의 value 속성에 문자열을 변경함 - 주로 입력양식에 사용 예) // input 태그의 value 의 값을 가져옴 $(function() { let value = $(“#name”); //변수 사용 alert(value.val()); //안녕하세요 출력 }); // 또는 $(function() { alert($(“#name”).val()); //변수 사용 않함, 안녕하세요 출력 }); // input 태그의 value 의 값을 변경함 $(function() { $(“#name”).val(“변경했어요”); //변수 사용 않함, 변경했어요 로 문자열 변경됨 });
6) attr() : 속성값 가져오기
- html 의 속성을 가져오는 함수
사용법 : let 변수 = $("태그").attr("속성"); - 태그에 해당하는 속성을 가져와서 변수에 저장함 예) <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>속성의 값을 가져오기</title> </head> <body> <!-- jquery cdn --> <script src="http://code.jquery.com/jquery-3.1.0.js"></script> <script> $(function(){ let src = $("script").attr("src"); alert(src); }) </script> </body> </html>
(7) attr() : 속성값 저장하기
- html 의 속성을 저장하는 함수
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>속성에 값 저장하기</title> </head> <body> <img /> <img /> <img /> <!-- jquery cdn --> <script src="http://code.jquery.com/jquery-3.1.0.js"></script> <script> $(function(){ // 속성에 값 저장 $("img").attr("alt", "jquery 속성 지정"); $("img").attr("src", "http://placehold.it/100x100"); $("img").attr("width", "100"); }) </script> </body> </html>
(8) addClass() / removeClass()
사용법 : $("css선택자").addClass("클래스명"); - css선택자에 클래스명을 추가 사용법 : $("css선택자").removeClass("클래스명"); - css선택자에 클래스명을 삭제 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>class 추가/삭제</title> <style> .box { width: 100px; height: 100px; background-color: red; } .newClass { background-color: blue; border-radius: 50px; } </style> </head> <body> <div class="box"></div> <!-- jquery cdn --> <script src="http://code.jquery.com/jquery-3.1.0.js"></script> <script> $(function(){ $(".box").hover(function(){ // 마우스 위로 $(".box").addClass("newClass"); }, function(){ // 마우스가 나갔을때 $(".box").removeClass("newClass"); }); }) </script> </body> </html>
(9) fadeToggle
사용법 : $(css선택자).fadeToggle(상태); - 상태 : slow, fast 등 - css선택자가 있다면 천천히 사라지고, 없으면 천천히 나타남 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <button>Toggle Show</button> <div class="page"> <h1>Lorem ipsum dolor sit amet</h1> <p>Lorem ipsum dolor sit amet consectetur adipisicing elit.</p> </div> <!-- jquery cdn --> <script src="http://code.jquery.com/jquery-3.1.0.js"></script> <script> // jquery 기본형 형태 // $(document).ready(function(){ // }); // jquery 축약형 형태 $(function(){ // 클릭 $("button").click(function(){ // 간단한 효과를 적용합니다. $(".page").fadeToggle("slow"); }) }) </script> </body> </html>
(10) show() / hide()
사용법: $(css선택자).show(); // 선택 태그가 나타남 사용법: $(css선택자).hide(); // 선택 태그가 사라짐 예) <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <h1>요소의 표시와 숨김</h1> <button id="showBtn">요소 표시</button> <button id="hideBtn">요소 숨김</button> <p id="text">이 단락을 숨기거나 나타나게 할 거에요!</p> <!-- jquery cdn --> <script src="http://code.jquery.com/jquery-3.1.0.js"></script> <script> // 클릭 : 1) $().click(함수()); // 2) .addEventListener("click", 함수()) 와 비슷 $(function(){ $("#showBtn").on("click", function(){ // 사용법: $(css선택자).show(); // 선택 태그가 나타남 $("#text").show(); }) $("#hideBtn").on("click", function(){ // 사용법: $(css선택자).hide(); // 선택 태그가 사라짐 $("#text").hide(); }) }) </script> </body> </html>
(11) toggle()
사용법 : $("css선택자").toggle(); - css선택자가 있으면 사라지고(hide), 없으면 나타남(show) <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <button class="btn">Click to toggle</button> <p class="target">Lorem ipsum dolor sit amet</p> <!-- jquery cdn --> <script src="http://code.jquery.com/jquery-3.1.0.js"></script> <script> $(function(){ $(".btn").click(function(){ // 클릭 // toggle === show/hide 기능 $(".target").toggle(); }) }) </script> </body> </html>
(12) find()
사용법 : $("부모선택자").find("자식선택자").함수() - 부모선택자 안에 자식 태그들중에 자식선택자를 찾아서 함수를 적용함 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>16_jq_find.html</title> </head> <body> <p class="target"> <span class="lo">Lorem</span> <span class="ip">Ipsum</span> <span class="do">Dolor</span> </p> <!-- jquery cdn --> <script src="http://code.jquery.com/jquery-3.1.0.js"></script> <script> // ip 를 찾아서 배경색: skyblue $(".target").find(".ip") .css("background-color", "skyblue"); </script> </body> </html>
📃 Jquery 이벤트
- 바닐라 js 처럼 클릭, 마우스, 키보드 키다운 등의 이벤트를 사용할 수 있음
클릭
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> </head> <body> <p>안녕하세요</p> <p>반갑습니다.</p> <button>글자 색상 변경하기</button> <!-- jquery cdn --> <script src="http://code.jquery.com/jquery-3.1.0.js"></script> <script> $(function(){ $("button").click(function(){ // 클릭시 실행될 부분 // p 태그 글자색: red $("p").css("color", "red"); }) }) </script> </body> </html>
마우스
사용법: $(css선택자).hover(function(){실행1}, function(){실행2}) - 마우스가 올라가면 실행1 이 실행되고, - 마우스가 나가면 실행2가 실행됨 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>hover : 마우스 위로/나가기</title> </head> <body> <h1>Click</h1> <!-- jquery cdn --> <script src="http://code.jquery.com/jquery-3.1.0.js"></script> <script> $(function(){ $("h1").hover(function(){ // 마우스 위로 // this : 현재 선택한 태그 (h1) $(this).css({ background: "red"}) }, function(){ // 마우스 나갔을때 $(this).css({ background: ""}) }) }) </script> </body> </html>