• 검색 결과가 없습니다.

16 이벤트

N/A
N/A
Protected

Academic year: 2022

Share "16 이벤트"

Copied!
27
0
0

로드 중.... (전체 텍스트 보기)

전체 글

(1)

과목명: 웹프로그래밍응용

교재: 모던웹을 위한 JavaScript Jquery 입문, 한빛미디어

2014년 1학기

Professor Seung-Hoon Choi

Part2. jQuery

Ch16. 이벤트

(2)

16 이벤트

jQuery 에서는

– 자바스크립트보다 더 쉽게 이벤트를 연결할 수 있음

– $(document).ready(function(event) { } )

(3)

16.1 이벤트 연결 기본

기본적인 이벤트 연결 방법

– on( ) 메소드 이용

두 가지 형태

– 1) $(selector).on(eventName, function(event){ })

eventName: 이벤트 이름

function(event): 이벤트 리스너

– this 키워드: 이벤트 발생 객체를 나타냄

– 2) $(selector).on(object)

object: 이벤트 이름을 속성으로, 이벤트 리스너를 속성의 값으로 갖는 객체

(4)

16.1 이벤트 연결 기본

예: 코드 16-2

– 첫 번째 이벤트 연결 방법 – $(this): 이벤트 발생 객체

– $(selector).html(function(index,html))

html( ) 메소드를 이용하여 선택된 엘리먼트의 innerHTML 값을 변경함

function(index,html)

– 선택된 엘리먼트의 새로운 innerHTML 값을 리턴하는 함수 – index: 선택된 엘리먼트의 인덱스

– html: 선택된 엘리먼트의 현재 innerHTML 값

(5)

16.1 이벤트 연결 기본

예: 코드 16-3, 16-4

– 두 번째 이벤트 연결 방법을 사용함

– addClass( ): class 속성을 추가하는 메소드 – removeClass( ): class 속성을 제거하는 메소드

(6)

16.2 간단한 이벤트 연결

간단한 이벤트 연결 방식

– 이벤트 이름을 메소드 이름으로 사용 – 예: ready( )

표 1-2

– blur, focus, focusin, focusout, load – resize, scroll, unload, click, dbclick

– mousedown, mouseup, mousemove, mouseover, mouseout – mouseenter, mouseleave, change, select, submit

– keydown, keypress, keyup, error, ready

(7)

16.2 간단한 이벤트 연결

두 개의 이벤트를 동시에 연결하는 메소드도 있다.

– 예: hover( )

mouseenter 이벤트와 mouseleave 이벤트를 동시에 연결함

코드 16-5

– hover( )의 첫 번째 인자: mouseenter 이벤트 리스너 – hover( )의 두 번째 인자: mouseleave 이벤트 리스너

on( ) 메소드보다, 간단한 이벤트 연결 방법이 더 많이 사용

(8)

16.3 이벤트 연결 제거

off( ) 메소드

– 이벤트 제거 시 사용함 – 3 가지 형태

1) $(selector).off( )

– 해당 문서 객체와 관련된 모든 이벤트를 제거함

2) $(selector).off(eventName)

– 해당 문서 객체의 특정 이벤트와 관련된 모든 리스너를 제거함

3) $(selector).off(eventName, function)

– 해당 문서 객체의 특정 이벤트와 관련된 특정 리스너를 제거함

(9)

16.3 이벤트 연결 제거

코드 16-7, 16-8

– click 이벤트를 한 번만 처리하고 해제시킴

one( )

– 이벤트를 한 번만 처리하고 해제시키는 메소드

(10)

16.4 매개변수 context

지금까지 사용한 $( ) 메소드에

– selector 이외에 context 매개변수를 추가할 수 있음 – context 역할

selector가 적용되는 범위를 지정함

일반적으로 이벤트와 함께 사용함

코드 16-9, 16-10, 16-11

– 클릭한 <div> 내부의 <h1>과 <p> 태그만 선택

var header = $(‘h1’, this).text( )

var paragraph = $(‘p’, this).text( )

– find( ) 메소드를 이용해서 구현할 수도 있음

선택된 엘리먼트의 자손들을 검색하는 메소드

코드 16-12

(11)

16.5 이벤트 객체

jQuery 이벤트 객체

– 자바스크립트의 이벤트 객체와 유사함

표16-6 이벤트 객체의 속성

– event.pageX: 브라우저 화면(웹 페이지)을 기준으로 한 마우스 의 X 좌표

– event.pageY: 브라우저 화면 (웹 페이지)을 기준으로 한 마우스 의 Y 좌표

– event.preventDefault( ): 기본 이벤트를 제거함 – event.stopPropagation( ) : 이벤트 전달을 제거함

(12)

16.5 이벤트 객체

코드 16-13, 16-14, 16-15, 16-16

– canvas 객체와 이벤트 객체를 이용하여 그림을 그리는 웹 페이 지

– jQuery는 canvas 태그를 정식으로 지원하지 않음

따라서, document.getElementById(‘canvas’)를 이용하여

canvas 객체를 얻어옴 – 구현 방법

canvas 객체에 대하여

– mousedown과 mouseup 이벤트 리스너를 구현함

offset( ) 메소드를 이용하여 canvas의 위치를 얻음

– 선택된 엘리먼트의 웹 페이지 내에서의 좌표(top과 left)를 구하는 메 소드

(13)

16.5 이벤트 객체

코드 16-13, 16-14, 16-15, 16-16 (계속)

– 구현 방법(계속)

마우스 클릭한 곳의 canvas 내에서의 x, y 좌표

– x 좌표 = event.pageX - canvas의 left – y 좌표 = event.pageY - canvas의 top

canvas의 context 객체의 메소드 이용

– beginPath( ), moveTo( ), lineTo( ), stroke( ) 메소드를 이용하여 canvas 객체에 선을 그림

– 메소드 설명

• beginPath( ): 새로운 path를 시작하는 메소드

• moveTo(x, y): path를 (x, y) 지점으로 이동시키는 메소드

• lineTo(x, y): 이전 지점부터 (x, y) 지점까지 선을 생성시키는 메 소드

• stroke( ): 정의된 path를 실제로 그리는 메소드

(14)

16.6 이벤트 강제 발생

trigger( )

– 이벤트를 강제로 발생시키는 메소드 – 2 가지 형태

1) $(selector).trigger(eventName)

– 특정 이벤트를 발생시킴

2) $(selector).trigger(eventName, data)

– 연결된 이벤트 리스너에 data를 전달함 – 일반적으로 data에는 배열을 넣어줌

코드 16-17, 16-18

– 마지막 <h1> 태그에 1초마다 한 번씩 클릭 이벤트를 발생시 킴

$(‘h1’).last( ).trigger(‘click’);

(15)

16.7 기본 이벤트와 이벤트 전달

표16-8 이벤트 객체의 메소드

– preventDefault( )

기본 이벤트를 제거하는 메소드 (return false; 와 동일함) – stopPropagation( )

이벤트 전달을 제거하는 메소드

코드 16-21, 16-22, 16-23

– <a> 클릭 시 기본 이벤트를 제거하는 방법

$(‘a’).click( function(event) {

$(this).css(‘background-color’, ‘blue’);

event.preventDefault( );

} );

(16)

16.7 기본 이벤트와 이벤트 전달

코드 16-24

– <a>에서 발생한 click 이벤트의 전달을 막음

코드 16-25

– 이벤트 리스너에서 return false; 문장을 사용하면

stopPropagation( )과 preventDefault( )를 동시에 적용하는 것과 동일한 효과를 가짐

(17)

16.8 이벤트 연결 범위 한정

on(types, selector, data, fn, one) 메소드 사용 시

– 두 번째 매개변수를 이용하여 이벤트 범위를 한정할 수 있음

코드 16-26, 16-27

– 새로 생긴 <h1> 태그를 클릭하면 아무 일도 일어나지 않음 – 이유

on( ) 메소드는 현재 존재하는 태그에만 이벤트를 연결하기 때문

(18)

16.8 이벤트 연결 범위 한정

코드 16-28

– 상위 태그인 #wrap 태그에 이벤트를 연결

$(‘#wrap‘).on(‘click’, ‘h1’, function( ) { … } );

– 이벤트 리스너 연결 시, ‘h1’으로 범위를 지정해 줌

이벤트 리스너 안에서의 this는 class 속성이 wrap인 태그가 아니 라, h1 태그를 가리킨다는 것에 주의할 것

코드 16-29

– 코드 16-28에서 연결했던 이벤트 리스너를 삭제

$(‘#wrap’).off(‘click’, ‘h1’);

코드 16-30

– 상위 개념이 애매한 태그는 document 객체에 이벤트를 연결

(19)

16.9 마우스 이벤트

표16-11 마우스 이벤트 – click: 마우스 클릭 시 발생

– dbclick: 마우스 더블 클릭 시 발생

– mousedown: 마우스 버튼 누를 때 발생 – mouseup: 마우스 버튼 뗄 때 발생

– mouseenter: 마우스가 요소의 경계 외부에서 내부로 이동 시 발생(마 우스가 선택된 태그에 들어올 때만 발생함, mouseover와 다름)

– mouseleave: 마우스가 요소의 경계 내부에서 외부로 이동 시 발생 – mousemove: 마우스를 움직일 때 발생

– mouseout: 마우스가 요소를 벗어날 때 발생

– mouseover: 마우스가 요소 위로 이동할 때 발생(마우스가 선택된 태 그의 자손 중 하나에 들어와도 발생함)

(20)

16.9 마우스 이벤트

코드 16-31

– mouseover 이벤트와 mouseenter 이벤트의 차이를 보여줌 – mouseover는, 내부 태그로 들어가도 발생함

마우스 버블링과 유사함

현대에는 거의 사용하지 않음

mouseover 이벤트 발생

mouseenter 이벤트 발생

문서 객체선택된

(21)

16.10 키보드 이벤트

표16-12 키보드 이벤트

– keydown: 키보드 키를 누를 때 발생함 – keypress: 글자가 입력될 때 발생함 – keyup: 키보드 키를 뗄 때 발생함

코드 16-32, 16-33

– keyup 이벤트 발생 시 입력된 글자 개수 검사

(22)

16.10 키보드 이벤트

글자 입력시 발생하는 키보드 이벤트 순서

– 1) 사용자가 키를 누릅니다.

– 2) keydown 이벤트 발생 – 3) 글자가 입력됨

– 4) keypress 이벤트 발생 (한글은 keypress 이벤트 지원하지 않음) – 5) 사용자가 키보드에서 손을 뗀다.

– 6) keyup 이벤트 발생

코드 16-34

– 입력된 글자의 개수가 150을 넘으면 남은 글자수를 빨간색으 로 표시함

(23)

16.11 윈도 이벤트

윈도 이벤트

– window 객체와 document 객체, img 태그 등에서 사용할 수 있는 이 벤트

표16-13 윈도 이벤트

– ready: 전체 웹페이지 로드가 완료되면 발생 – load: 특정 엘리먼트의 로드가 완료될 때 발생

– unload: 브라우저의 내용이 현재 페이지를 벗어날 때 발생

예: 다른 웹페이지로 가는 링크 클릭 시, forward/backward 버튼 누를 때, 현재 페이지가 reload 될 때, 주소창에 새로운 URL이 입력되었을 때, 브라 우저를 닫을 때 등

– resize: 브라우저의 크기가 변화할 때 발생 – scroll: 특정 엘리먼트를 스크롤할 때 발생 – error: 에러가 있을 때 발생

(24)

16.11 윈도 이벤트

코드 16-35, 16-36, 16-37, 16-38

– 스크롤이 끝까지 내려가면

window 객체의 scrollTop 속성과 height 속성을 합한 값이

document 객체의 높이와 같아집니다.

– $(window).scrollTop( )

window 객체의 수직 스크롤 바의 위치

문서의 내용 중 이미 스크롤된 부분의 양을 나타내는 값 – $(window).height( )

window 객체의 높이 – $(document).height( )

문서 전체의 높이

(25)

16.12 입력 양식 이벤트

표16-14

– change: 엘리먼트에 변화가 생겼을 때 발생

항목이 선택되거나 체크 상태가 바뀔 때

텍스트 필드에 내용이 바뀔 때

– focus: 엘리먼트가 포커스를 얻을 때 발생

– focusin: 엘리먼트 또는 그 자손이 포커스를 얻을 때 발생 – focusout: 엘리먼트 또는 그 자손이 포커스를 잃을 때 발생 – blur: 엘리먼트가 포커스를 잃을 때 발생

– select: text area 또는 text field에서 텍스트 선택 시 발생 – submit: submit 버튼을 누르면 발생

– reset: reset 버튼을 누르면 발생

(26)

16.12 입력 양식 이벤트

코드 16-39, 16-40

– form 태그에서 발생하는 submit 이벤트를 이용하여 – 입력 값의 유효성을 검사함

– submit 이벤트의 기본 핸들러는 제거함

event.preventDefault( )

(27)

16.12 입력 양식 이벤트

코드 16-41

– checkbox의 상태 변화 시 change 이벤트가 발생함 – children( ) 메소드

선택된 엘리먼트의 자손을 얻는 메소드 – prop( ) 메소드

선택된 엘리먼트의 속성 값을 얻거나 설정하는 메소드

참조

관련 문서

그 결과 스포츠 이벤트와 브랜드가 스폰서십을 통해 연결 될 때 스포츠 이벤트 이미지는 스폰서한 브랜드 이미지에 전이되는 것으로 나타났 으며 , 스폰서십

내부유동에서의 속도분포로부터 평균속도를, 온도분포로부터 평균온도를

문화(culture)란 특정 사회가 공유하며 한 세대와 다음 세대로 이어지는 가치, 행동양식, 태도 등을 통칭 제도 institution 관습 custom 의식 ritual 법률

 Maximum Event Precision From Training Prior: 이벤트 정밀도가 최대 가 되는 임계치를 설정한다.  Event Precision Equal Recall: 이벤트 정밀도와

행사 및 부대 이벤트 운영 행사 및 부대 이벤트 운영 행사 관련 제작물 제작 및 진행 버스킹, 예술공연 운영 행사 운영.. 개발사와 투자사,

폼을 열어 레코드들이 표시될 때 발 생하며, 이 이벤트는 Current 이벤트 전에 발생하고 Open 이벤트 후에 발 생함.

운동 중독의 경우,다른 하위요인에서는 의미있는 차이를 보이지 않지만 금단 현상 요인에서 성별로 의미있는 차이를 나타내고 있다.연령에 따른 차이를 보 기위해

- sub system을 구성할 부분을 Drag하여 선택 - 마우스 오른쪽 클릭하여, Create subsystem 선택 - 오른쪽 그림을 보면 하나의 subsystem이 생성 - subsystem을 더블클릭 하면