DevSSOM

jQuery 이벤트 - Class 이벤트 본문

JavaScript

jQuery 이벤트 - Class 이벤트

데브쏨 2021. 7. 19. 02:01
반응형

Class 이벤트

HTML 문서에서 특정 태그가 어떤 클래스를 가지고 있는지, 특정 클래스를 가지고 있다면 그 클래스를 제거하거나, 특정 클래스를 가지고 있지 않다면, 새로운 클래스를 붙이거나 할 때 다음의 제이쿼리 이벤트들을 활용함.

$("h1").addClass();       // 대상에 괄호 안 클래스 추가
$("h1").removeClass();    // 대상에 괄호 안 클래스 제거
$("h1").toggleClass();    // addClass와 removeClass 둘 다
$("h1").hasClass();       // 대상에 괄호 안 클래스 있는지 확인

 

실습문제

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>제이쿼리 기초</title>

    <link rel="stylesheet" href="index.css">
</head>
<body>

    <h1>Blue Font</h1>
    <h2>Red Font</h2>

    <button class="addClass">Add Class</button>
    <button class="removeClass">Remove Class</button>
    <button class="hasClass">Has Class</button>
    
    <script src="jquery-3.3.1.js"></script>
    <script src="index.js"></script>

</body>
</html>

css 파일엔 이미 blue와 important를 만들어뒀음.

.blue {
    color: blue;
}

.important {
    color: red;
    font-weight: bold;
    font-size: xx-large;
}

 

저 3개의 버튼의 기능을 구현하기 위해서 제이쿼리로 index.js 파일에 코드를 작성해줄거임.

 

가장 먼저, #addClass 영역을 클릭하면, <h1>에 .blue클래스를, <h2>에 .important 클래스가 추가되도록 만들기. 여기서 Class 이벤트에 인자를 넣을 때는, 클래스임에도 불구하고 앞에 온점.을 붙이시면 안 된다는 점에 유의.

$(function() {
  
  $(".addClass").click(function() {
    $("h1").addClass("blue");
    $("h2").addClass("important");
  });

});

이제 Add Class 버튼을 누르면 폰트 컬러와 크기가 아래처럼 바뀌게 됨.

크롬 개발자도구 요소검사로 어떻게 동작하는지를 확인해보면, 처음에 <h1>, <h2> 태그에는 class가 없었음. 

근데, 이제 Add Class 버튼을 누르면, <h1>과 <h2>에 class가 생기는 걸 볼 수 있어.

 

 

이어서 Remove Class 버튼도 이벤트를 추가하기. #removeClass 영역을 클릭하면, <h1>의 .blue클래스가, <h2>의 .important 클래스가 제거되도록 해보는거야.

$(function() {
  
  $(".addClass").click(function() {
    $("h1").addClass("blue");
    $("h2").addClass("important");
  });
  
  $(".removeClass").click(function() {
    $("h1").removeClass("blue");
    $("h2").removeClass("important");
  });
  
});

그럼 Remove Class 버튼을 눌렀을 때 다시 처음의 검정 폰트와 크기로 돌아오게 됨.


이제 마지막으로 #hasClass 영역을 클릭하면, 클래스.blue와 .important가 없으면 추가가, 있으면 제거가 되도록 해보기.

$(function() {
  
  $(".addClass").click(function() {
    $("h1").addClass("blue");
    $("h2").addClass("important");
  });
  
  $(".removeClass").click(function() {
    $("h1").removeClass("blue");
    $("h2").removeClass("important");
  });


  $(".hasClass").click(function() {
  
    if($("h1").hasClass("blue") && $("h2").hasClass("important")) {
      $("h1").removeClass("blue");
      $("h2").removeClass("important");
    } else {
      $("h1").addClass("blue");
      $("h2").addClass("important");
    }
  
  });
  
});

Has Class 이벤트를 이렇게 if문으로 코드를 짜도 되지만, 지금처럼 하면 너무 복잡해. 그래서 제이쿼리에서는 토글 클래스라는 걸 만들어놨어. toggleClass(); 이걸 활용해서 다시 코드를 짜보면

$(function() {
  
  $(".addClass").click(function() {
    $("h1").addClass("blue");
    $("h2").addClass("important");
  });
  
  $(".removeClass").click(function() {
    $("h1").removeClass("blue");
    $("h2").removeClass("important");
  });


  $(".hasClass").click(function() {
  
    $("h1").toggleClass("blue");
    $("h2").toggleClass("important");
  
  });
  
});

이벤트는 동일하게 작동되지만, 코드는 훨씬 깔끔해짐.

 

 

728x90
반응형
댓글