
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>jQuery</title>
<script type="text/javascript" src="../js/jquery-3.6.0.min.js"></script>
<script type="text/javascript">
$(function(){
//배열 생성 후 배열에 넣어서 인식?
$('#btn1').click(function(){ //매개변수로 function(){};을 전달하면 functio이 이벤트 핸들러가 됨
$('p').css('background-color','yellow');
});
});
</script>
</head>
<body>
<button id="btn1">click</button>
<p>내용</p>
</body>
</html>


<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>jQuery</title>
<style type="text/css">
.reverse{
background-image:url(../files/winter.jpg);
color:white;
}
</style>
<script type="text/javascript" src="../js/jquery-3.6.0.min.js"></script>
<script type="text/javascript">
$(function(){
$('#btn1').mouseover(function(){
$('p').css('background-color','yellow');
});
$('#btn1').mouseout(function(){
$('p').css('background-color','purple');
});
$('#btn2').hover(function(){
//mouseover 이벤트 발생 시 호출
$('p').css('background-color','yellow');
},function(){
//mouseout 이벤트 발생 시 호출
$('p').css('background-color','purple');
});
$('h1').hover(function(){
//mouseover 이벤트 발생 시 호출
//이벤트가 발생한 태그
$(this).addClass('reverse');
},function(){
//mouseout 이벤트 발생 시 호출
$(this).removeClass('reverse');
});
});
</script>
</head>
<body>
<button id="btn1">mouseover/out</button>
<button id="btn2">hover</button>
<p>내용</p>
<hr size="1" width="90%" noshade="noshade"></hr>
<h1>Header - 0</h1>
<h1>Header - 1</h1>
<h1>Header - 2</h1>
</body>
</html>



→ hover()는 하나의 메서드를 이용해서 mouseover, mouseout 효과를 동시에 줌<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>jQuery</title>
<script type="text/javascript" src="../js/jquery-3.6.0.min.js"></script>
<script type="text/javascript">
$(function(){
$('textarea').keyup(function(){
//입력한 글자 수를 구함
//val() : 태그의 value 속성의 값 반환
let inputLength = $(this).val().length;
let remain = 30 - inputLength;
//문서 객체 입력
$('h1').html(remain);
//문서 객체의 색상을 변경
if(remain >= 0){
$('h1').css('color','black');
} else{
$('h1').css('color','red');
}
});
});
</script>
</head>
<body>
<div>
<p>지금 내 생각을</p>
<h1>30</h1>
<textarea rows="5" cols="70" maxlength="30"></textarea>
</div>
</body>
</html>
※ maxlength 크기만큼만 데이터 입력 가능
※ 순간적으로 -1(음수일 시 색상이 red로 변경됨)이 될 수는 있지만 전달은 불가
이벤트를 등록한 이후에도 동적으로 생성된 이벤트를 등록한 요소와 동일한 새 요소에도 이벤트가 등록됨
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>jQuery</title>
<style type="text/css">
.reverse{
background:black;
color:white;
}
</style>
<script type="text/javascript" src="../js/jquery-3.6.0.min.js"></script>
<script type="text/javascript">
$(function(){
//click 이벤트 연결
//이벤트 타입, 이벤트 핸들러
$('h1').on('click',function(){
//이벤트가 발생한 태그
$(this).html(function(index,html){
return html + '+';
});
});
$('h1').on({
mouseover:function(){
//클래스 추가
$(this).addClass('reverse');
},
mouseout:function(){
//클래스 제거
$(this).removeClass('reverse');
}
});
});
</script>
</head>
<body>
<h1>Header - 0</h1>
<h1>Header - 1</h1>
<h1>Header - 2</h1>
</body>
</html>



<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>jQuery</title>
<script type="text/javascript" src="../js/jquery-3.6.0.min.js"></script>
<script type="text/javascript">
$(function(){
//.on() : 현재 존재하는 태그에 이벤트 연결할 수 있고, 동적으로 생성된 태그에도 이벤트 연결 가능
//동적으로 생성된 태그에 이벤트 연결
//이벤트 타입, 이벤트가 발생하는 태그, 이벤트 핸들러
$(document).on('click','h1',function(){
let length = $('h1').length; //h1태그의 개수
//이벤트가 발생한 태그의 내용 반환
let targetHTML = $(this).html();
//태그를 생성해서 div에 추가
$('#wrap').append('<h1>' + length + ' - ' + targetHTML + '</h1>');
});
});
</script>
</head>
<body>
<div id="wrap">
<h1>Header</h1>
</div>
</body>
</html>
ex) 설정 시 가만히 있어도 마우스가 클릭한 것 같은 효과를 줌
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>jQuery</title>
<script type="text/javascript" src="../js/jquery-3.6.0.min.js"></script>
<script type="text/javascript">
$(function(){
//.trigger(이벤트 타입) : 이벤트 강제 발생
$('h1').on('click',function(){
$(this).html(function(index, html){
return html + '*';
});
});
//1초마다 함수를 실행
setInterval(function(){
//이벤트 강제 발생
$('h1').trigger('click');
},1000);
});
</script>
</head>
<body>
<h1>Start : </h1>
</body>
</html>





: 효과 메서드
show( ) : 숨겨져 있던 효과를 노출시킴
hide( ) : 노출되어 있는 요소를 숨김
toggle( ) : 숨겨져 있던 요소는 노출시키고, 노출되어 있던 요소는 숨김
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>jQuery</title>
<script type="text/javascript" src="../js/jquery-3.6.0.min.js"></script>
<script type="text/javascript">
$(function(){
$('#btn1').on('click',function(){
//속도값 : fast(200), normal(400), slow(600)
//millisecond로 지정 가능
$('#dog').show('slow',function(){
//태그의 노출이 완료되면 매개변수로 전달한 함수 호출
alert('노출 완료!!');
});
}); //btn1 이벤트 연결
$('#btn2').on('click',function(){
//속도값
$('#dog').hide(1000,function(){
//태그가 숨겨진 후 매개변수로 전달된 함수 호출
alert('숨김 완료!!');
});
}); //btn2 이벤트 연결
$('#btn3').on('click',function(){
//선택한 요소가 보이면 숨기고, 숨겨져 있으면 나타나도록 처리
$('#dog').toggle('slow');
}); //btn3 이벤트 연결
});
</script>
</head>
<body>
<button id="btn1">Show</button>
<button id="btn2">Hide</button>
<button id="btn3">Toggle</button>
<br>
<img id="dog" src="../files/dog.png" width="120" height="100" style="display:none">
</body>
</html>




fadeIn() : 숨겨져 있던 요소가 점점 선명해지면서 노출
fadeOut() : 노출되어 있던 요소는 점점 투명해지면서 숨겨짐
fadeToggle() : 노출되어 있던 요소는 점점 투명해지며 사라지고, 사라져 있던 요소는 선명해지면서 노출
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>jQuery</title>
<script type="text/javascript" src="../js/jquery-3.6.0.min.js"></script>
<script type="text/javascript">
$(function(){
$('#btn1').on('click',function(){
//천천히 선명해짐
$('#dog').fadeIn('slow');
}); //btn1 이벤트 연결
$('#btn2').on('click',function(){
//1초 동안 투명해지면서 사라짐
$('#dog').fadeOut(1000);
}); //btn2 이벤트 연결
$('#btn3').on('click',function(){
//이미지가 선명하면 투명하게, 투명하면 선명하게 처리
$('#dog').fadeToggle('fast');
}); //btn3 이벤트 연결
});
</script>
</head>
<body>
<button id="btn1">FadeIn</button>
<button id="btn2">FadeOut</button>
<button id="btn3">FadeToggle</button>
<br>
<img id="dog" src="../files/dog.png" width="120" height="100" style="display:none">
</body>
</html>



<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>jQuery</title>
<script type="text/javascript" src="../js/jquery-3.6.0.min.js"></script>
<script type="text/javascript">
$(function(){
$('#btn1').on('click',function(){
//투명도 0~1
$('#dog').fadeTo('slow',0.3);
}); //btn1 이벤트 연결
$('#btn2').on('click',function(){
//완전 불투명
$('#dog').fadeTo('slow',1);
}); //btn2 이벤트 연결
});
</script>
</head>
<body>
<button id="btn1">투명도(30%)</button>
<button id="btn2">투명도(100%)</button>
<br>
<img id="dog" src="../files/dog.png" width="120" height="100">
</body>
</html>


slideUp() : 노출되어 있던 요소를 위로 접으며 숨김
slideDown() : 숨겨져 있던 요소가 밑으로 펼쳐지며 노출
slideToggle() : 숨겨져 있던 요소는 아래로 펼쳐지며 노출되고, 노출되어 있던 요소는 위로 접으면서 숨김
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>jQuery</title>
<style>
h1{
width:300px;
height:200px;
background-color:#FF0;
}
</style>
<script type="text/javascript" src="../js/jquery-3.6.0.min.js"></script>
<script type="text/javascript">
$(function(){
$('#btn1').on('click',function(){
//위로 올라가면서 숨겨짐
$('h1').slideUp(1000);
}); //btn1 이벤트 연결
$('#btn2').on('click',function(){
//아래로 내려가면서 보여짐
$('h1').slideDown('slow');
}); //btn2 이벤트 연결
$('#btn3').on('click',function(){
$('h1').slideToggle('fast');
}); //btn3 이벤트 연결
});
</script>
</head>
<body>
<button id="btn1">SlideUp</button>
<button id="btn2">SlideDown</button>
<button id="btn3">SlideToggle</button>
<h1>내용</h1>
</body>
</html>


<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>jQuery</title>
<style>
h1{width:50px; height:30px; background-color:red; font-size:100%;}
h2{width:50px; height:30px; background-color:orange; font-size:100%;}
h3{width:50px; height:30px; background-color:aqua; font-size:100%;}
</style>
<script type="text/javascript" src="../js/jquery-3.6.0.min.js"></script>
<script type="text/javascript">
$(function(){
//animate({애니메이션 속성},효과 속도,콜백 함수); / 콜백 함수 = 메서드 내에서 실행되는 함수
//애니메이션 속성 : 모션으로 적용할 속성을 스타일(CSS)을 이용해 입력
$('h1').animate({
marginLeft:'250px'
},5000,function(){
alert('도착 완료!');
});
$('h2').animate({
marginLeft:'250px',
opacity:0.3,
width:'100px',
height:'100px'
},5000);
$('h3').animate({marginLeft:'250px'},3000)
.animate({marginLeft:'100px'},2000)
});
</script>
</head>
<body>
<h1>내용</h1>
<h2>내용</h2>
<h3>내용</h3>
</body>
</html>

5초 동안 h1 태그를 밀어냄
5초 동안 h2 태그를 밀어내면서 크기도 커짐
3초 동안 h3태그를 왼쪽 여백 250px 위치로 이동 후 2초 동안 왼쪽 여백 100px 위치로 이동

