jQuery는 DOM,이벤트,Data 등의 핸들링을 쉽게 하기 위해 만들어진 자바스크립트 함수의 모음(라이브러리)이다.
메서드는 함수의 구성인 '함수명()' 처럼 생겼지만 앞에 .(점)을 찍어 사용하는 API를 말한다.
이번 페이지에서는 지금까지 배운 제이쿼리의 메서드들을 정리하며 복습해보려 한다!
그에 앞서, 자바스크립트 코드가 제이쿼리로 어떻게 바뀌는지 간단히 살펴보자.
//제이쿼리 파일다운 후 연결
<script src="./js/jquery.min.js"></script>
//easing 함수시트 사용 시 파일다운 후 연결
<script src="./js/jquery.easing.min.js"></script>
<script>
//변수선언 - 선택자는 모두 $로 한다.
const box = document.querySelector('.box'); //Js
const $box = $('.box'); //jQuery
//클래스선택($)과 이벤트구문(.on)
document.querySelector('.start').addEventListener('click',function(){}); //Js
$('.start').on('click',function(){}); //jQuery
//jQuery 메서드 체인 방식 : 띄어쓰기해서 작성 가능. 마지막에 세미콜론 ;
$box.delay(3000)
.animate({left:700},2000,"easeOutBounce")
.animate({left:0});
</script>
const $slides = $('.slides');
.on은 이벤트를 실행하는 메서드로, 자바스크립트의 .addEventListener 함수를 jQuery 식으로 작성한 것이다.
.on('이벤트명',function(){});
.on('mouseenter',function(){});
을 줄여 .mouseenter(function(){});
으로 사용 가능하다. <script>
// mouse 관련 이벤트
$(function(){
let count_box = 0;
// box안에 집입 시 카운트 1증가
$('.box').on('mouseenter',function(){
count_box++;
$('p').text(count_box);
});
//box에 진입 시 배경색 변경
$('.box').mouseenter(function(){
$('.box').css({'background-color':'red'});
});
//keyup 이벤트 : esc(27)를 누르면 박스를 숨겨라
//js에서는 .keyCode / jQuery에서는 .which로 키코드를 추출
$(document).on('keyup',function(evt){
if(evt.which=='27'){
$lightbox.hide();
});
});
</script>
.animate({변화될속성명:값},시간(기본값400),"easing함수",function(){});
<script>
$(document).ready(function(){ //제이쿼리의 준비함수 = $(function(){});
const $box = $('.box');
$('.start').on('click',function(){ //click이벤트
$box.delay(2000) //2초뒤 시작
.animate({left:700},2000,"easeOutBounce") //오른쪽으로 700px만큼 2초동안 이동
.animate({left:0}); //왼쪽 기준 0 값인 제자리로 돌아옴
});
$('.stop').on('click',function(){ //클래스 stop을 클릭하면
$box.stop(); //box 변수가 정지됨(여기서는 위의 animate가 두개라 두번 클릭해야된다.ㅋㅋ;)
});
});
</script>
마우스를 hover 했을 때 콜백함수를 실행한다. 이 때 함수를 2개 넣을 수 있는데, 첫번째 함수는 mouseenter에 해당하고 두번째 함수는 mouseleave에 해당한다.
.hover(함수1, 함수2);
<script>
$(function(){
// mouseenter 이벤트
$('.box').on('mouseenter',function(){
$(this).text("마우스엔터");
});
// mouseleave 이벤트
$('.box').on('mouseleave',function(){
$(this).text("마우스리브");
});
// hover 메서드 : 위의 두 이벤트 합친 것
$('.box').hover(
function(){
$(this).text("마우스엔터");
}
,
function(){
$(this).text("마우스리브");
}
);
});
</script>
nth-of-type()처럼, 몇번째 태그를 선택할 것인지에 따라 골라서 사용하면 된다.
<script>
$(document).ready(function(){
//첫번째 li에 대한 click 이벤트 구문
$('ul>li').first().on('click',function(){
console.log("첫번째 li");
});
//두번째 li에 대한 click 이벤트 구문 (eq는 0부터 시작)
$('ul>li').eq(1).on('click',function(){
console.log("두번째 li");
});
//마지막 li에 대한 click 이벤트 구문
$('ul>li').last().on('click',function(){
console.log("마지막 li");
});
</script>
<script>
$(document).ready(function(){
$('ul>li>a').on('click',function(evt){
evt.preventDefault(); //a는 다른 링크로 넘어가니까
let idx = $('ul>li>a').index(this); //a를 클릭한 현재위치
$('span').text(idx); //span에 idx(인덱스번호) 텍스트로 출력하기
});
});
</script>
css style을 지정할 때 사용한다. ({}) 안에 작성하며 세미콜론(;)은 사용하지 않는다.
<script>
$(document).ready(function(){
$('.text').on('click',function(){
$('.text').css({
color:'blue',
fontWeight:'800',
backgroundColor:'yellow'
border: '3px double black'
});
});
});
</script>
해당 요소의 html 속성(attribute) 값을 가져오거나 추가할 때 사용한다.
.attr('속성명', '속성값');
<script>
$('h1').attr('class'); //h1의 class를 추출
$('div').attr('class','box'); //div에 class=box 추가
$('div').removeAttr('class'); //div의 class 속성 삭제
$('a').children('img').attr({
src : $('a').attr('href'),
}); //img의 속성 src에 a태그의 href값을 부여
</script>
클래스를 추가하거나 지우고, 토글(껐다켰다하는 스위치!)처럼 클래스 추가,삭제를 번갈아 실행하는 메서드
<script>
$(document).ready(function(){
//첫번째 버튼을 click하면 첫번째 li에 .yellow 클래스를 추가
$('button').first().on('click',function(){
$('ul>li).first().addClass('yellow');
});
//두번째 버튼을 click하면 두번째 li의 .green 클래스를 제거
$('button').eq(1).on('click',function(){
$('ul>li').eq(1).removeClass('green');
});
//마지막 버튼을 click하면 세번째 li에 .pink가 없으면 추가, 있으면 삭제
$('button').last().on('click',function(){
$('ul>li').last().toggleClass('pink');
});
});
</script>
<script>
$(document).ready(function(){
//버튼의 부모요소에 노란배경색 적용
$('button').on('click',function(){
$(this).parent().css({
backgroundColor:'yellow'
});
});
//클래스를 클릭하면 형제요소의 글자크기를 25px로 변경
$('.pain').on('click',function(){
$(this).siblings().css({
fontSize:'25px'
});
});
//p요소의 직계자식에 이중테두리선 적용
$('p').children('span').css({
border : '3px double black'
});
//li 요소의 자손 중 strong 선택 후 폰트색 변경
$('li').find('strong').css({
color : 'red'
});
});
</script>
<script>
$(function(){
//첫번째 버튼을 누르면 p영역이 2초동안 커지며 나타남
$btn.first().on('click',function(){
$p.show(2000);
});
//두번째 버튼을 누르면 p영역이 2초동안 width,height가 0이 되면서 사라짐
$btn.eq(1).on('click',function(){
$p.hide(2000);
});
//마지막 버튼을 누르면 현재 상태에 따라 위의 요소들을 번갈아 실행
$btn.last().on('click',function(){
$p.toggle(2000);
});
});
</script>
$('h1').remove();
$('p').empty();
fadeIn(slow)
fadeIn(fast)
fadeIn(1000) //1초동안 나타나기
fadeIn(3000,function(){}); //3초동안 함수 실행
<script>
$(function(){
//스크롤을 150이상 내리면 aside(top화살표)를 나타내고 아니면 사라지게 한다.
$('window').on('scroll',function(){
if(scrollTop>150){
$aside.fadeIn();
}else{
$aside.fadeOut();
}
});
//해당요소의 이전 요소(버튼)을 클릭할 때 3초동안 서서히 나타나게
//fadeIn 콜백함수를 활용하여 박스 안의 텍스트도 나타나도록 : 박스가 3초동안 나타난 '이후' 텍스트가 1초동안 나타난다.
$btn.prev().on('click', function(){
$box.fadeIn(3000,function(){
$('.text').fadeIn(1000);
});
});
});
</script>
$(this).stop().slideDown(200);
$(this).stop().slideUp(200);
<style>
p{
width: 100px;
height: 60px;
padding: 10px;
boder: 5px solid #fff;
}
</style>
<script>
$(function(){
let value1 = $('p').width();
console.log(value1); // 100
let value2 = $('p').innerwidth();
console.log(value2); // 120
let value3 = $('p').outerwidth();
console.log(value3); // 130
});
</script>
<script>
//요소의 top값(body로부터의 상단 거리) 구하는 방법- .offset().top
for(let i=0;i<$mnu.size();i++){
arrTopVal[i] = $("#visual~section").eq(i).offset().top;
}
</script>
<script>
$(function(){
//스크롤탑 값 콘솔창에 출력
$(window).on('scroll',function(){
let scrollTop = $(this).scrollTop();
console.log("scrollTop = ",scrollTop);
});
// scrollTop은 2100으로, scrollLeft는 2000으로 이동
$(window).click(function(){
$(window).scrollTop(2100).scrollLeft(2000);
});
});
</script>
둘다 해당요소의 개수를 리턴하는 동일한 기능을 수행한다.
실질적으로는, .size는 메서드, length는 속성이라 함수호출이 필요없는 length가 선호된다고 한다. 또한 size는 jQuery3.0 이후 제거되었기 때문에 length 속성을 사용하길 권장한다.
<ul>
<li>list1</li>
<li>list2</li>
</ul>
<script>
alert("Size : "+$("li").size() ); //size : 2
alert("length : "+$("li").length ); //length : 2
</script>
어떠한 요소의 마지막 자식으로 다른 요소를 추가하는 메서드, 둘의 쓰임은 방법만 다를 뿐 결국 같다.
<script>
$(function(){
//ol의 마지막 자식으로 li를 추가하는 두가지 방법
$('button').on('click,function(){
$('ol').append('<li>리스트 추가</li>');
});
$('button').on('click,function(){
$('<li>리스트 추가</li>').appendTo('ol');
});
});
</script>
<script>
$(function(){
$('a').on('click',function(evt){
evt.preventDefault(); //a의 초기값 제거
evt.stopPropagation(); //상위 요소로 이벤트버블링 차단
return false; //초기값 + 이벤트버블링 둘다 차단
})
});
</script>