본문 바로가기
IT 개발/JavaScript

07. 제이쿼리 이벤트 (4) : 이벤트 객체와 종류 / Scroll 이벤트 메서드

by Love of fate 2020. 3. 15.
728x90
반응형

이벤트 객체와 종류

- 사용자가 이벤트를 발생시킬 때마다 이벤트 핸들러의 매개변수에는 이벤트 객체가 생성되며, 이벤트 객체에는 이벤트 타입에 맞는 다양한 정보를 제공하는 속성과 메서드가 포함되어 있다.

<기본형>

$("이벤트 대상 선택").mousemove(function(매개변수){
	매개변수(이벤트 객체).속성;
});

이벤트 객체의 속성 종류

구분 종류 설명
마우스 이벤트 clientX 마우스 포인터의 X 좌푯값 반환(스크롤 이동 거리 무시)
clientY 마우스 포인터의 Y 좌푯값 반환(스크롤 이동 거리 무시)
pageX 스크롤 X축의 이동한 거리를 계산하여 마우스 포인터의 X 좌푯값을 반환
pageY 스크롤 Y축의 이동한 거리를 계산하여 마우스 포인터의 Y 좌푯값을 반환
screenX 화면 모니터를 기준으로 마우스 포인터의 X 좌표값을 반환
screenY 화면 모니터를 기준으로 마우스 포인터의 Y 좌표값을 반환
layerX position을 적용한 요소를 기준으로 마우스 포인터의 X 좌표값을 반환
layerY position을 적용한 요소를 기준으로 마우스 포인터의 Y 좌표값을 반환
button 마우스 버튼의 종류에 따라 값을 반환(왼쪽 0, 휠 1, 오른쪽 2)
키보드 이벤트 keyCode 키보드의 아스키 코드값을 반환
altKey 이벤트 발생 시 "Alt"키가 눌려있으면 true, 아니면 false를 반환
ctrlKey 이벤트 발생 시 "Ctrl" 키가 눌렸으면 true, 아니면 false를 반환
shiftKey 이벤트 발생 시 Shift 키가 눌렸으면 true, 아니면 false를 반환
전체 이벤트 target 이벤트가 전파된 마지막 요소를 가리킴
cancelBubble 이벤트의 전파를 차단하는 속성으로, 기본값은 false며, true로 설정하면 전파가 차단된다.
stopPropagation() 이벤트 전파를 차단함
preventDefault() 기본 이벤트를 차단함. 예를 들어 <a>에 클릭 이벤트를 적용하고 사용자가 이벤트를 발생시키면 기본 이벤트가 등록되어 있어 링크 주소로 이동하는데, 이런 기본 이벤트를 차단할 수 있다.

Scroll() 이벤트 메서드

scroll() 이벤트 메서드는 대상 요소의 스크롤바가 이동할 떄마다 이벤트를 발생시키거나 강제로 scroll 이벤트를

발생시키는데 사용 


<기본형>

* scroll 이벤트 등록
$("이벤트 대상 선택").scroll(function(){자바스크립트 코드; });
$("이벤트 대상 선택").on("scroll", function(){자바스크립트 코드; });

*scroll 이벤트 강제 발생
$("이벤트 대상 선택").scroll();

 

예제)

* 스크롤바를 생성한 다음 사용자가 스크롤바를 이동시킬 때마다 이벤트가 발생하도록 하기.

* scrollTop, scrollLeft의 속성값이 바뀌는 것 확인

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<!DOCTYPE html>
<html>
<head>
    <meta charset='utf-8'>
    <title>Page Title</title>
    <meta name='viewport' content='width=device-width, initial-scale=1'>
    <script src="http://code.jquery.com/jquery-latest.min.js"></script>
</head>
<script>
 //이벤트 대상인 브라우저(window)의 수직, 수평 스크롤바가 이동한 만큼의
 // 값을 구해 출력함.
   $(window).on("scroll"function(){
        var sc_top = $(this).scrollTop();
        var sc_left = $(this).scrollLeft();
 
        $(".top").text(sc_top);
        $(".left").text(sc_left);
    });
</script>
<style>
    body {
        height: 10000px;
        width: 5000px;
    }
    #wrap {
        position: fixed;
        left: 10px;
        top: 10px;
    }
</style>
<body>
    <div id="wrap">
        <p>scrollTop : <span class="top">0</span>px</p>
        <p>scrollLeft : <span class="left">0</span>px</p>
    </div>
</body>
</html>
 
 

 

* 결과 

 

728x90
반응형