html에서 자바스크립트 코드를 head에 넣지 않고 body 끝에 넣는 이유는?
요약 : 페이지 로딩을 조금 더 빠르게 하기 위해서.
웹브라우저가 HTML 문서를 해석(Parsing) 할 때 <script> 태그를 만나면 그 안에 있는 JavaScript 의 처리가 끝날 때 까지 다른 HTML의 해석을 멈추기 때문에 사용자 입장에서 HTML 페이지가 화면에 다 그려지기까지 더 오래걸리게 된다. 그래서 우선 CSS, HTML 해석이 먼저 완료되고 나서 JavaScript 가 수행하는 것이 더 빠르기에 HTML 문서의 마지막(= </body> 직전)에 두는 것을 권한다.
제이쿼리 이벤트
$(function() { 내용 });
jQuery의 이벤트 처리 방식은 객체에 직접 이벤트를 등록하는 것이다. document가 ready되면 콜백 함수의 내용을 실행하는 코드로 ready 되었다는 것은 DOM 로딩이 완료되었다는 이야기.
jQuery 마우스 이벤트
이벤트 |
설명 |
click |
노드(elements)를 마우스 포인터로 눌렀다가 떼었을 때에 발생 |
dblclick |
노드를 더블 클릭 했을 때에 발생 |
hover |
mouseenter와 mouseleave 이벤트를 한번에 bind한다. |
mousedown |
노드 영역에서 마우스를 눌렀다가 떼었을 때에 발생 |
mouseenter |
노드에 마우스가 진입했을 때에 발생(자식노드에서는 이벤트를 감지 못함) |
mouseleave |
마우스가 노드에서 벗어났을 때에 발생 |
mousemove |
노드 영역에서 마우스를 움직였을 때에 발생 |
mouseout |
노드에서 마우스 포인터가 떠났을 때에 발생 |
mouseover |
노드 영역에서 마우스를 올려놓았을 때 발생 (내부노드까지 이벤트를 감지) |
mouseup |
마우스 포인터를 노드에 올려놓고 마우스 버튼을 눌렀다 떼었을 때에 발생 |
toggle |
click 이벤트에 핸들러를 바인딩하고 클릭할 때마다 실행될 함수들을 차례대로 실행 |
jQuery 문서로딩 이벤트
이벤트 |
설명 |
ready |
해당 페이지가 로딩되었을 때에(처음 읽힐 때에) 발생 |
unload |
해당 페이지를 빠져나갈 때에 발생 |
실습하기 1
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>jquery - 이벤트</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<script>
// $(document).ready(function(){
// $('#btn1').click(function(){
// alert('버튼이 클릭되었어요')
// });
// }); //Ready : html을 다 읽고 제이쿼리를 읽는다.
</script>
</head>
<body>
<header>
<h1>jquery시작하기</h1>
</header>
<div id="container">
<h3>Mouse Events</h3>
<button id="btn1">Button 1</button>
<button id="btn2">Button 2</button>
<button id="btn3">Button 3</button>
<button id="btn4">Button 4</button>
<button id="btn5">Button 5</button>
<p id="para1">Lorem ipsum, dolor sit amet consectetur adipisicing elit. Ad itaque similique accusantium velit optio, recusandae beatae numquam quasi magni aut illum necessitatibus voluptas ullam ab error aspernatur distinctio hic repellat.</p>
<h1 id="coords"></h1>
</div>
<script>
// $('#btn1').click(function(){
// alert('Button Clicked!');
// });
$(document).ready(function(){ //여기 레디는 혹시나
$('#btn1').on('click', function(){
$('#para1').hide();
});
$('#btn2').on('click', function(){
$('#para1').show();
});
// hover => on( 'mouseenter' / 'mouseleave' )
$('#btn3').on('mouseenter', function(){
$('#para1').toggle(); //1,2를 합친 것
});
$('#btn4').on('mousedown', function(){
$('#para1').toggle(); //누를 동안
});
$('#btn4').on('mouseup', function(){
$('#para1').toggle();
});
$('#btn5').on('click', function(e){
console.log(e.currentTarget.id);
});
// 'mousemove' : 마우스가 움직이는 좌표를 보여준다.
$(document).on('mousemove', function(e){
$('#coords').html(`Coords : Y : ${e.clientY} X : ${e.clientX}`); //html전체를 바꿈
});
$('#btn1').on('click', function(e){
$('h3').text('버튼이 눌러졌습니다.'); //text부분만 바꿈
});
});
</script>
</body>
</html>
jQuery Form 이벤트
이벤트 |
설명 |
blur |
노드에서 포커스가 떠날 때에 발생 |
change |
노드의 값이 변경될 때에 발생 |
focus |
노드가 포커스를 획득했을 때에 발생 |
select |
유저가 텍스트를 선택했을 때에 발생 |
submit |
폼의 내용을 전송할 때에 발생 |
jQuery 키보드 이벤트
이벤트 |
설명 |
keydown |
해당 영역에서 키보드를 눌렀을 때에 발생 |
keypress |
해당 영역에서 키보드를 계속 누르고 있을 때에 발생 |
keyup |
해당 영역에서 키보드를 눌렀다가 떼었을 때 발생 |
jQuery 웹 브라우저 이벤트
이벤트 |
설명 |
resize |
웹브라우저 윈도우 사이즈의 변화가 있을 때 |
scroll |
스크롤이 움직일 때에 발생 |
더 다양한 이벤트는 ...
실습하기 2
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>jquery - 이벤트</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
</head>
<body>
<header>
<h1>jquery 폼 이벤트</h1>
</header>
<div id="container">
<form id="form" action="">
<label>Name</label><br>
<input type="text" id="name" name="name">
<br>
<label>Email</label><br>
<input type="email" id="email" name="email">
<br>
<label>Gender</label><br>
<select name="gender" id="gender">
<option value="male">Male</option>
<option value="female">Female</option>
</select>
<br>
<input type="submit" value="Submit">
</form>
</div>
<script>
$('input').focus(function(){
//alert('Focus');
//$('input#name').css('background', 'pink');
$(this).css('background', 'pink');
});
$('input').blur(function(){
//alert('Focus');
$(this).css('background', 'blue');
});
$('input').keyup(function(e){ //글자를 적고 손을 뗐을 때 적용
console.log(e.target.value); //적은값을 콘솔에 보여준다
});
$('select#gender').change(function(e){
//alert('changed!');
alert(e.target.value); //male, female 값을 알림창에 띄워준다.
});
$('#form').submit(function(e){
e.preventDefault();
let name = $('input#name').val();
console.log(name);
}); // submit : 중지시키고 원하는 기능을 넣는다.
</script>
</body>
</html>
'Javascript > JQuery' 카테고리의 다른 글
오류: 다른 요소(element)도 같이 선택되는 문제 (0) | 2019.12.05 |
---|---|
jQuery (5) Ajax 기술 사용해서 json 파싱하기 (0) | 2019.07.03 |
jQuery (4) 애니메이션 효과 (0) | 2019.06.28 |
jQuery (3) 돔 (DOM) (0) | 2019.06.28 |
jQuery (1) 제이쿼리 정의, 역사, 개요 (0) | 2019.06.28 |