별의 공부 블로그 🧑🏻‍💻
728x90
728x170

* 그룹 이벤트 등록 메서드

- 그룹 이벤트 등록 메서드를 상요하면 한 번에 2개 이상의 이벤트를 등록할 수 있음.

- 예를 들어, 선택한 요소에 메서드를 한 번만 적용하여 '마우스를 올렸을 때'와 '포커스가 생생되었을 때'와 같이 두 이벤트가 발생되도록 만들 수 있음.

- 그룹 이벤트 등록 메서드의 종류

 종류

설명 

 on()

 선택한 요소에 한 개 이상의 이벤트를 등록할 수 있음.

 그리고 사용 방식에 따라 이벤트를 등록한 이후에도 동적으로 생성된 이벤트를 등록한 요소와 동일한 새 요소에도 이벤트가 등록됨.

 이 메서드는 제이쿼리 1.7 버전 이상부터 지원하고 있음.

 bind()

 선택한 요소에 한 개 이상의 이벤트를 등록할 수 있음.

 delegate()

 선택한 요소의 지정한 하위 요소에 이벤트를 등록함.

 이벤트를 등록한 이후에 동적으로 생성된 이벤트를 등록한 요소와 동일한 새 요소에도 이벤트가 등록됨.

 live()

 선택한 요소에 한 개 이상의 이벤트를 등록할 수 있으며, 이벤트 등록된 이후에 동적으로 생성된 이벤트를 등록한 요소와 동일한 새 요소에도 이벤트가 등록됨.

 이 메서드는 제이쿼리 1.9 버전부터는 지원하지 않음.

 one()

 선택한 요소에 이벤트를 등록하며, 단 한 번만 이벤트가 발생됨.

 

(1) on() 이벤트 등록 메서드

- 여러 개의 이벤트를 등록할 때 사용함.

- 제이쿼리 1.7 버전부터 지원하고 있음.

- on() 이벤트 등록 메서드를 어떻게 사용하느냐에 따라, 이벤트를 등록한 이후에 동적으로 생성된 이벤트가 등록된 요소와 같은 새 요소에도 동일한 이벤트가 적용됨

- 기본형

 1. $(요소 선택).on("이벤트 종류 1, 이벤트 종류 2, ..., 이벤트 종류 n", function(){...});   // 선택한 요소에 여러 개의 이벤트를 등록함.

 2. $(요소 선택).on({    // 선택한 요소에 여러 개의 이벤트를 등록하고, 이벤트 발생 종류에 따라 각 이벤트 핸들러가 실행됨.

      "이벤트 종류 1":function(){...},

      "이벤트 종류 2":function(){...}

      ...

      "이벤트 종류 n":function(){...}

    });

 3. $(document).on("이벤트 종류 1, 이벤트 종류 2, ..., 이벤트 종류 n", "요소 선택", function(){...}); 

  // 선택한 요소뿐만 아니라 이벤트 등록 이후에 동적으로 생성된 이벤트 등록된 요소와 동일한 새 요소에도 이벤트가 등록됨.

 

- 예)

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
<!-- 문단 태그 영역 -->
<body>
    <h1><a href="#">버튼</a></h1>
    <h2></h2>
</body>
 
<!-- 메서드 적용 -->
<script type="text/javascript">
    $(function(){
       $("h1 a").on({  //(a)
           "mouseover focus":function(){  
            // (a)에 마우스를 올리거나 포커스가 이동되었을 때 function(){...}의 실행문 실행
               $(this).css("color","red"); // (a)의 글자를 빨간색으로 적용
           },
           "mouseout blur":function(){      
            // (a)에서 마우스가 벗어나거나 포커스가 다른 요소로 이동되었을 때 function(){...}의 실행문 실행
               $(this).css("color""yellow"); // (a)의 글자를 노란색으로 적용
           }
       });
 
       $("h2 a").on("mouseover focus"function(){  
        // (b) (b)에 마우스를 올리거나 포커스가 이동되었을 때 function(){...}의 실행문 실행
           $(this).css("background-color""yellow"); // (b)의 배경을 노란색으로 적용
       });
 
       $(document).on("mouseout blur""h2 a"function(){ 
        // (c) c에서 마우스가 벗어나거나 포커스가 다른 요소로 이동되었을 때 function(){...}의 실행문 실행
           $(this).css("background-color","aqua"); // (c)의 배경을 아쿠아색으로 적용
       });
 
       $("h2").append("<a href='#'>생성된 요소</a>");    
        // <h2>에 새 요소를 위의 이벤트 등록보다 늦게 생성함.
    });
</script>
cs

 

(2) bind() 이벤트 등록 메서드

- 선택한 요소에 여러 개의 이벤트를 등록하는 메서드.

- on() 이벤트 등록 메서드의 사용 방법과 비슷함.

- 하지만 bind() 이벤트 등록 메서드는 동적으로 생성된 새 요소에는 이벤트가 적용되지 않음

- 기본형

 $(요소 선택).bind("이벤트 종류 1, 이벤트 종류 2, ..., 이벤트 종류 n", function(){...}); 

 

- 예)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<!-- 문단 태그 영역 -->
<body>
    <h1><a href="#">내용</a></h1>
</body>
 
<!-- 메서드 적용 -->
<script type="text/javascript">
    $(function(){
      $("h1 a").bind("mouseover focus"function(){
        // <h1> 태그의 하위 <a> 태그에 마우스를 올리거나 포커스가 이동되었을 때 이벤트 핸들러의 실행문을 실행
        $(this).css("background-color""yellow");
        // 이벤트가 발생한 <a>에 노란색 배경을 생성함.
      });
    });
</script>
cs

 

 

(3) delegate() 이벤트 등록 메서드

- 선택한 요소의 하위 요소에 여러 개의 이벤트를 등록할 수 있음.

- 이벤트를 등록한 이후에 동적으로 생성된 이벤트를 등록한 요소와 동일한 새 요소에도 이벤트가 등록됨.

- 기본형

 $(상위 요소 선택).delegate("하위 요소 선택", "이벤트 종류 1, 이벤트 종류 2, ... , 이벤트 종류 n", function(){...}); 

 

- 예)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<!-- 문단 태그 영역 -->
<body>
    <h1></h1>
</body>
 
<!-- 메서드 적용 -->
<script type="text/javascript">
    $(function(){
      $("h1").delegate("a","mouseover focus",function(){
          // <h1> 태그의 하위 <a> 태그에 마우스를 올리거나 포커스가 이동되었을 때 이벤트 핸들러의 실행문을 실행
          $(this).css("background-color""yellow");
          // 이벤트가 발생한 <a>의 배경을 노란색으로 적용
      });
 
      $("h1").htmL("<a href='#'>내용</a>"); // <h1> 태그에 새 요소가 생성됨.
    });
</script>
cs

 

 

(4) one() 이벤트 등록 메서드

- 선택한 요소에 이벤트를 등록함.

- 한번 이벤트가 발생되면 자동으로 등록된 이벤트가 제거되어 한 번밖에 사용할 수 없음.

- 기본형

$(요소 선택).one("이벤트 종류", function(){...});

 

- 예)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<!-- 문단 태그 영역 -->
<body>
    <button>증가 버튼</button>
    <p>0</p>
</body>
 
<!-- 메서드 적용 -->
<script type="text/javascript">
    $(function(){
        var num=0;      // num에 초깃값 0 지정
        $("button").one("click"function(){  // [증가 버튼]을 클릭했을 때
            num++;  // 변수 num의 데이터를 1만큼 증가시킴.
            $("p").text(num);   // 변수 num에 데이터를 <p>의 텍스트로 출력
        })
    });
</script>
cs

 

 

* 이벤트 제거 메서드

- 이벤트 제거 메서드를 사용하면 이전에 등록된 이벤트를 제거할 수 있음.

- 이벤트 제거 메서드 종류

 종류

설명

 off()

 선택한 요소에 등록된 이벤트를 제거

 unbind()

 off()와 비슷한 기능의 메서드. 선택한 요소에 등록된 이벤트를 제거

 

* off() 이벤트 제거 메서드

- 선택한 요소에 등록된 이벤트를 제거함.

- 예를 들어, 마우스로 이동하는 공지사항 레이어(layer)를 만든다면, 지정한 요소 위에 마우스를 올려 버튼을 누른 상태에서(mousedown) 움직일 때 mousemove 이벤트를 발생시켜 커서의 X, Y의 좌푯값을 구해야 함. 그리고 마우스에서 손을 떼었을 때(mouseup)는 이동이 정지되어야 하므로, 이때는 mousemove 이벤트가 제거되어야 함.

- 이와 같이 지정한 요소에 등록한 특정 이벤트를 제거해야 할 때 off() 이벤트 제거 메서드가 사용됨.

- 기본형

 1. $(요소 선택).off();                    // 선택한 요소에 등록된 모든 이벤트를 제거함.

 2. $(요소 선택).off("이벤트 종류");   // 선택한 요소에 등록된 이벤트 중 지정한 이벤트만 제거함.    

 

- 예)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<!-- 문단 태그 영역 -->
<body>
    <h1><a href="#">내용</a></h1>
    <button>이벤트 삭제</button>
</body>
 
<!-- 메서드 적용 -->
<script type="text/javascript">
    $(function(){
        $("h1 a").on("mouseover focus"function(){
            // <h1> 태그의 하위 <a> 태그에 마우스를 올리거나 포커스가 이동되었을 때 이벤트 핸들러의 실행문 실행
            $(this).css("background-color""yellow"); // 이벤트가 발생한 <a> 태그의 배경을 노란색으로 적용
        });
 
        $("button").on("click"function(){ // 버튼을 클릭했을 때
            $("h1 a").off(); // 위의 <a> 태그의 이벤트가 제거됨.
        });
    });
</script>
cs

 

 

내용 출처 : Do It! 자바스크립트+제이쿼리 입문 (정인용 지음, 이지스퍼블리싱)

728x90
그리드형(광고전용)
⚠️AdBlock이 감지되었습니다. 원할한 페이지 표시를 위해 AdBlock을 꺼주세요.⚠️
starrykss
starrykss
별의 공부 블로그 🧑🏻‍💻


📖 Contents 📖