VSCode_jquery. DOM event

dwanGim·2022년 3월 14일
0

vscode_basic

목록 보기
33/55

event binding

특정 이벤트를 DOM을 이용해 element와 연결하는 것을

event binding이라고 합니다.

기초적인 이벤트의 종류들은 아래와 같습니다.

click(함수) - 선택 요소 클릭 시 함수 실행

dbclick(함수) - 선택요소 더블 클릭 시 함수 실행

mouseover(함수) - 선택요소 위에 마우스 커서 올릴 시 함수 실행

mouseout(함수) - 커서가 선택요소에서 벗어날 시 함수 실행

focus(함수) - 대상에 포커싱 시 함수 실행

focusout(함수) -input요소에 포커싱이 풀릴 시 함수 실행

keydown(함수) - 키입력 감지 시 함수 실행

keypress(함수) - 키 입력 감지 시 함수 실행

mouseenter(함수) - 마우스가 선택 요소 내로 이동 시 함수 실행

mouseleave(함수) -마우스가 선택요소 밖으로 나가면 함수 실행

resize(함수) - 창크기 변환 시마다 함수 실행

submit(함수) - submit버튼이 눌릴 시 마다 함수 실행

reset(함수) - reset버튼 눌릴 시 마다 함수 실행

toggle(함수) -클릭할 때마다 함수를 번살아 실행

hover(함수) - 마우스 올렸을 때, 벗어났을 때 함수 실행

nload(함수) -문서 종료 시 함수 실행

change(함수) -값이 바뀌고 포커스 옮겨졌을 때 실행

bind(함수) -여러 개의 이벤트를 적용할 때 사용.

코드를 통해서 실습을 해봅시다.

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
    <style>
        * {
            margin : 0;
            padding  : 0;
        }

        li {
            list-style:none;
        }

        body {
            font:12px/1.5 "굴림", Gulim;
            margin:10px;
        }

        h2 {
            margin-top:30px;
        }

        a {
            color:#333;
        }

        #textZone {
            width:700;
        }

        #listWrap {
            background:#cfcfcf;
            width:100px;
            padding:10px;
        }

        .list1{
            display:none;
        }
    </style>

jquery 스크립트와 style태그입니다.

<body>
    <div id="wrap">
        <h1>이벤트 연습</h1>
        <p id="textZone">
            웹 브라우저에서 버튼을 클릭한다거나 마우스를
            움직이거나 하는 모든 행위를 이벤트라고 합니다.
            그리고 이벤트 발생 시 함수의 실행문이 수행되도록
            이벤트를 지정하는 것을 이벤트 핸들러라고 합니다.
        </p>
        <h2>click 메서드</h2>
        <p><button id="btn1">click</button></p>

        <h2>mouseover 메서드</h2>
        <p><button id="btn2">mouseover</button></p>

        <h2>bind 메서드</h2>
        <p><button id="btn3">bind</button></p>

        <h2>mouseleave 메서드</h2>
        <div id="listWrap">
            <h3>관련 사이트</h3>
            <ul class="list1">
                <li><a href="#">list1</a></li>
                <li><a href="#">list2</a></li>
                <li><a href="#">list3</a></li>
                <li><a href="#">list4</a></li>
            </ul>
        </div>
        <h2>hover 메서드</h2>
        <h3><a href="#" class="hover">hover</a></h3>
    </div>

    
</body>

script를 적용시켜볼 body태그입니다.

그럼 바로 시작해보겠습니다.

<script>



        $(function() {

            // #btn1에 onclick 이벤트를 걸어서
            // 클릭시 #textZone의 글씨색이 파란색으로 바뀌도록
            $("#btn1").click(function() {
                $("#textZone").css("color", "blue");

            });

클릭 시 #textZone의 글씨색이 파란색이 됩니다.

 // #btn2에 .mouseover를 활용해서
            // #textZone의 배경색이 노란색으로 바뀌게
            // 이벤트를 걸어주세요.
            $("#btn2").mouseover(function(){
                $("#textZone").css("background-color", "yellow");
                
            });

이번엔 mouseover를 이용해봅니다.

			 // #btn3에 .bind를 활용해서 2개의 동작 이벤트를 동시에 걸어보겠습니다.
            // .bind("이벤트1 이벤트2", 함수)
            // 형태로 이벤트명을 나란히 적어주면 됩니다.
            // 거는 이벤트는 마우스 오버와 포커스
            // 결과로 #textZone의 글씨색은 녹색, 볼드처리가 됩니다.

            $("#btn3").bind("mouseover focus", function(){
                $("#textZone").css("color", "green").css("font-weight", "bold");
                 });

bind를 사용하면 두 개의 이벤트를 동시에 적용시킵니다.

			// #listWrap에 mouseenter 시
            // .list1의 .css() "display"를 block으로
            // mouseleave 시 display 속성을 none으로 바꾸게
            // 이벤트를 2개 설정해주세요.
            $ ("#listWrap").mouseenter(function(){
                $(".list1").css("display", "block");
            });

            $ ("#listWrap").mouseleave(function(){
                $(".list1").css("display", "none");
            });

hover는 마우스가 선택요소 영역에 오버되거나

아웃될 때 실행되는 하무를 각각 지정합니다.

mouseenter, mouseleave는 마우스가 올라가거나

떠날 때 적용된 내용이 영구히 반영되지만

hover는 그 두개를 동시에 묶어주기 때문에

항상 마우스를 올린 동안만 실행되는 로직을 작성하기에

적합합니다.


            // 함수 1이 마우스 올릴 때, 함수2가 마우스 뺄 때 실행될 내용.
            // .hover(함수1(){}, 함수2(){});

            // 마우스 올리면 .hover의 글씨색 아쿠아색
            // 마우스 빼면 빨간색으로 설정해보세요.
            $(".hover").hover(function(){
                $(".hover").css("color", "aqua")},
                function(){$(".hover").css("color", "red")
            });

전체 코드입니다.

    <script>

        $(function() {


            $("#btn1").click(function() {
                $("#textZone").css("color", "blue");

            });


            $("#btn2").mouseover(function(){
                $("#textZone").css("background-color", "yellow");
                
            });
            


            $("#btn3").bind("mouseover focus", function(){
                $("#textZone").css("color", "green").css("font-weight", "bold");
                 });
            


            $ ("#listWrap").mouseenter(function(){
                $(".list1").css("display", "block");
            });

            $ ("#listWrap").mouseleave(function(){
                $(".list1").css("display", "none");
            });


            $(".hover").hover(function(){
                $(".hover").css("color", "aqua")},
                function(){$(".hover").css("color", "red")
            });

            




        });
    </script>

그럼 이 기능들을 활용해 간단한 메뉴 바를 만들어보겠습니다.

<!DOCTYPE html>
<html lang="en">
<head>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
    <style>
        #menu {
            background-color: chartreuse;
            width: 200px;
            padding: 10px;
        }
        .list {
            display: none;
        }
    </style>
    <script>
        // 화면 중간에 마우스를 가져다 대면 음식메뉴가 보이고
        // 마우스를 떼면 음식메뉴가 안보이게
        // jquery를 이용해 만들어주세요.
        $(function(){
            $("#menu").hover(function(){
                $(".list").css("display", "block")},
                 function() {$(".list").css("display", "none")
                 });

        });
        




    </script>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <div id="menu">
        <h3>요리 메뉴</h3>
        <ul class="list">
            <li>피자 : 20000원</li>
            <li>치킨 : 20000원</li>
            <li>탕수육 : 30000원</li>
            <li>초밥 : 15000원</li>
            <li>소고기 : 40000원</li>
        </ul>
    </div>
    
</body>
</html>

일단은 여기까지 입니다.

profile
배울 게 참 많네요.

0개의 댓글

관련 채용 정보