본문 바로가기
Front/jQuery

jQuery - DOM 요소의 속성 추가 및 삭제

by Hyeon_ 2021. 12. 15.

DOM 요소의 속성 추가 및 삭제

  • attr('속성명', 값) : 속성 추가
  • removeAttr('속성명') : 속성 제거
DOMattr.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>JavaScript</title>
    <script src="js/jquery-3.6.0.min.js"></script>
    <script type="text/javascript"> 
        $(document).ready(function(){
            $('#img')
                .on('mouseover', function(){
                    $(this).attr('src', 'image/apple.png');
                })
                .on('mouseout', function(){
                    $(this).attr('src', 'image/heart.png');
                })
        });

    </script>
</head>
<body>
    <h1>DOM 요소 속성 추가</h1>
    <img src="image/heart.png" id="img">
</body>
</html>

연습문제

DOMattrIndex.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>JavaScript</title>
    <style type="text/css">
        div {margin: 0 auto; width: 1000px;}
        img {width:200px; height: 100px;}
    </style>
    <script src="js/jquery-3.6.0.min.js"></script>
    <script type="text/javascript"> 
        $(document).ready(function(){
            // (1) <img> 태그를 선택해서 (객체 변수 생성 생략하고 바로 선택자를 객체로 사용)
            // var $img = $('img'); 해서 배열 객체 생성해도 되고
            // 바로 선택자로 each() 메소드 앞에 적어도 됨 : $('img').each()
            // <img> 4개 : 배열로 객체 생성

            // (2) 각 이미지에 마우스 올렸다 뗐을 떄 처리 : 각각을 처리해야 하므로 each() 사용
            // each()에는 기본 파라미터 index가 포함되어 있음.
            // 마우스 올렸다 뗐을 때 처리하는 메소드로 hover() 사용
            $('img').each(function(index) {
                $(this).hover(
                function() { // 마우스 올렸을 때 호출되는 함수
                    // 이미지 변경 : <img> 태그의 src 속성값을 변경 : attr() 메소드 사용
                    $(this).attr('src', 'image/img2-' +(index + 1)+ '.jpg');
                }, 
                function() {// 마우스 땠을 때 호출되는 함수
                    $(this).attr('src', 'image/img1-' +(index + 1)+ '.jpg');
                }); // hover 종료
            }); // each() 종료
        });

    </script>
</head>
<body>
    <img src="image/img1-1.jpg"><img src="image/img1-2.jpg"><img src="image/img1-3.jpg"><img src="image/img1-4.jpg">
</body>
</html>

DOM 요소의 클래스 속성

CSS 효과 동적 적용

  • CSS의 클래스 선택자에 적용된 여러 효과를 동적으로 추가하거나 제거
  • addClass('클래스명') : CSS 효과 적용
  • removeClass('클래스명') : 적용된 CSS 효과 제거(해제)
  • toggleClass('클래스명') 사용
    • addClass()removeClass()를 번갈아 가면서 실행하는 결과
DOMaddClass.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>JavaScript</title>
    <style type="text/css">
        * {text-align: center;}
        .h1Css{
            background-color: gold;
            color: blue;
        }

        .imgCss{
            opacity: 0.5;
            box-shadow: 5px 5px 10px 1px #777777;
        }

        .hidden{visibility: hidden;}
    </style>
    <script src="js/jquery-3.6.0.min.js"></script>
    <script type="text/javascript"> 
        $(document).ready(function(){
            $('img')
            .on('mouseover', function() {
                $(this).addClass('imgClass');
                $('h1').text("여러 CSS 효과 동적으로 적용");
                $('h1').addClass('h1Css');
            })
            .on('mouseout', function() {
                $(this).removeClass('imgClass');
                $('h1').text("이미지에 마우스를 올려보세요");
                $('h1').removeClass('h1Css');
            });

            // [toggleClass]버튼 클릭 시 addClass()와 removeClass()가 작동하도록
            $('#toggle').on('click', function(){
                $('img').toggleClass('hidden'); // hidden 클래스 효과
            });
        });

    </script>
</head>
<body>
    <div id="wrap">
        <h1>이미지에 마우스를 올려보세요</h1>
        <img src="image/painting.jpg"> <br><br>
        <button id="toggle">toggleClass</button>
    </div>
</body>
</html>

'Front > jQuery' 카테고리의 다른 글

응용 예제 - 음성녹음  (0) 2021.12.15
jQuery - 효과  (0) 2021.12.15
jQuery - DOM 요소 조작  (0) 2021.12.15
jQuery - 이벤트 객체 메소드  (0) 2021.12.15
jQuery - 이벤트(키보드 이벤트, 입력 양식 이벤트)  (0) 2021.12.14