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>