1. jQuery Event

특정 요소에서 발생하는 이벤트를 처리하기 위해서는 이벤트 핸들러(Event Handler) 함수를 작성해야만 한다.

이렇게 작성된 이벤트 핸들러를 특정 요소에 연결하는 것을 이벤트 바인딩(Event Binding)이라고 한다.

jQuery는 이 이벤트 바인딩을 위한 다양한 방법을 제공한다.

 

 

 

1-1. .on() 메소드

  • 선택한 요소에 어떤 타입의 이벤트라도 연결할 수 있다.
  • 하나의 이벤트 핸들러에 여러 개의 이벤트를 동시에 연결할 수 있다.
  • 선택한 요소에 여러 개의 이벤트 핸들러와 여러 개의 이벤트를 같이 연결할 수 있다.
  • 사용자 지정 이벤트(Custom Event)를 위해 이벤트 핸들러로 데이터를 넘길 수 있다.
  • 차후에 다루게 될 요소를 이벤트에 바인딩 할 수 있다.

 

[예제 코드]

<!-- 기본형 -->
<h1>click event</h1>
<p>여기를 클릭해 주세요</p>
<script>
$('p').on("click", function(){
    alert("문장이 클릭되었습니다.");
});
</script>

<!-- 이벤트 핸들러 하나에 이벤트를 여러개 설정 -->
<h1>마우스 이벤트</h1>
<p>이 문장 위로 마우스를 움직여 보세요</p>
<div></div>
<script>
    $('p').on('mouseenter mouseleave', function(){
        $('div').append('마우스 커서가 문장 위로 들어오거나 빠져나갔습니다.<br>');
    });
</script>

<!-- 하나의 요소에 여러 개의 이벤트 핸들러를 사용하여 여러 개의 이벤트를 같이 바인딩 -->
<h1>마우스 이벤트</h1>
<p>이 문장 위로 마우스를 움직여 보세요</p>
<div></div>
<script>
    $('p').on({
        click:function(){
            $('div').append('마우스가 문장을 클릭했습니다.<br>');
        },
        mouseenter:function(){
            $('div').append("마우스가 문장 위로 돌아왔습니다.<br>");
        },
        mouseleave:function(){
            $('div').append("마우스가 문장을 빠져 나갔습니다.<br>");
        }
    });
</script>

 

[출력 결과]

 

 

 

1-2. .off() 메소드

.off() 메소드는 더 이상 사용하지 않는 이벤트와의 바인딩을 제거한다.

 

[예제 코드]

<h1>off()이벤트</h1>
<button id="btn">버튼 클릭 가능</button>
<button id="btnBind">버튼 클릭을 가능하게 한다.</button>
<button id="btnUnbind">버튼 클릭을 불가능하게 한다.</button>
<div></div>
<script>
   function action(){
       $('div').append("버튼 이벤트 발생!!<br>");
   }

   $("#btn").on("click",function(){
       action();
   });

   $("#btnUnbind").on("click", function(){
// 	 		$("#btn").off("click");
// 	 		$("#btn").text("버튼 클릭 불가능");

       //chain기법
       $("#btn").off("click").text("버튼 클릭 불가능");
   });

   $('#btnBind').on("click", function(){
       $("#btn").on("click",function(){
           action();
       }).text("버튼 클릭 가능");
   });
</script>

Chain 기법(체인 기법 또는 체이닝 기법) : 선택한 대상에 대해서 연속적으로 제어하는 것

▶ 코드가 간결해진다는 장점이 있지만, 너무 복잡한 chain은 코드의 가독성을 떨어뜨릴 수 있다.

 

[출력 결과]

 

 

 

1-3. .one() 메소드

.one() 메소드는 바인딩된 이벤트 핸들러가 한 번만 실행되고 나서 더는 실행되지 않는다.

.on() 메소드와 같은 인수를 전달받는다. 따라서 여러 개의 이벤트 핸들러와 여러 개의 이벤트를 가질 수 있는 등, .on() 메소드와 같은 특징을 갖는다. 

 

[예제 코드]

<h1>one()</h1>
<p>아래 버튼은 한 번만 실행됩니다.</p>
<button>버튼을 클릭해 주세요</button>
<div></div>
<script type="text/javascript">
$("button").one("click", function(){
    $("div").append("이제 클릭이 되지 않습니다.<br>");
})
</script>

 

[출력 결과]

 

 

 

1-4. .click(), .dbclick()

[예제 코드]

<h1>jQuery click(), dblclick()</h1>
<button>버튼</button>을 클릭 or 더블클릭 하세요
<p id="text"></p>
<script>
    $("button").click(function(){
        $("#text").text("클릭이 되었습니다.");
    });
    $("button").dblclick(function(){
        $("#text").text("더블 클릭이 되었습니다.");
    });
</script>

 

[출력 결과]

 

 

 

1-5. keypress(), keydown()

Shift, Esc, Delete 키와 같이 화면에 출력되지 않는 키들은, "keydown" 이벤트는 발생시키지만, "keypress" 이벤트는 발생시키지 않는다.

 

[예제 코드]

<input type="text"> 입력 란에 키보드로 내용을 입력하세요.
<h1>jQuery .keypress()</h1>
<p id="text"></p>
<h1>jQuery .keydown()</h1>
<p id="text2"></p>
<script>
    let i = 0;
    $("input").keypress(function(){
        $("#text").text((++i) + "번 키보드가 눌렸습니다.");
    });
    let j = 0;
    $("input").keydown(function(){
        $("#text2").text((++j) + "번 키보드가 눌렸습니다.");
    });
</script>

 

[출력 결과]

 

 

 

1-6. effect 효과

  • .show() : 선택한 요소를 나타나게 한다.
  • .hide() : 선택한 요소를 사라지게 한다.

 

[예제 코드]

<h1>hide(), show() 메소드</h1>
<p>
<button id="btnHide">문장 숨기기</button>
<button id="btnShow">문장 표시하기</button>
</p>
<div>안녕하세요, jQuery입니다.</div>
<script>
    $("#btnHide").on("click", function(){
        $("div").hide(1000);
    });
    $("#btnShow").on("click", function(){
        $("div").show();
    });
</script>

.hide() 메소드의 괄호 안에는 slow, fast, 숫자를 넣을 수 있다. 숫자의 단위는 1000분의 1초

 

[출력 결과]

 

728x90

'이론 > 자바 풀스택 국비수업' 카테고리의 다른 글

220519 jQuery 4  (0) 2022.07.13
220519 jQuery 3  (0) 2022.07.07
220518 jQuery 1  (0) 2022.07.06
220517 Javascript 11  (0) 2022.06.23
220513~16 Javascript 10  (0) 2022.06.23

+ Recent posts