교육과정 기록/jQuery

jQuery - 객체 조작 메서드

춘식이왔엉 2022. 6. 30. 01:55

속성 조작 메서드

 

1. html() / text()

$("요소 선택").html();

$("요소 선택").html("새 요소");

$("요소 선택").text();

$("요소 선택").text("새 텍스트");

    <script>
        $(() => {
        
           // html() 메서드로 sec_1 안의 요소를 <p> -> <a>로 변경
            $("#sec_1").html();
            $("#sec_1 p").html("<a href=\\"#\\">Text1</a>");

           // text() 메서드로 sec_2 안의 h2태그의 텍스트를 변경
            $("#sec_2").text();
            $("#sec_2 h2").text("text()");
        });//.jq

      </script>
    </head>
    <body>
    <h1><strong>객체 조작 및 생성</strong></h1>>

    <section id="sec_1">
        <h2><em>html()</em></h2>
        <p>내용1</p>
    </section>

    <section id="sec_2">
        <h2><em>텍스트()</em></h2>
        <p>내용2</p>
    </section>

</body>

 

2. attr() / removeAttr()

$("요소 선택").attr("속성명");

$("요소 선택").attr("속성명", "새 값");

여러개 속성 --> $("요소 선택").attr( {"속성명1" : "새 값1", "속성명2" : "새 값2" ...} );

$("요소 선택).removeAttr("속성");

    <script>

        $(() => {

            $("#sec_1 img").attr("src");// 지정된 속성값 얻기

            $("#sec_1 img").attr({// 새로운 속성을 추가 또는 기존 속성값의 변경을 한꺼번에
                "widt": 200,
                "src" : srcVal.replace("684", "658")      // 기존속성값의 변경
            }).
            // 기존 속성을 제거
            removeAttr("border");

        });//.jq

    </script>
    </head>
    <body>
    <h1><strong>태그의 속성 조작 및 생성</strong></h1>
    <section id="sec_1">
        <h2>이미지 속성</h2>
        <p><img src="https://picsum.photos/id/684/600/400" border="2"></p>
    </section>

</body>
  • prop 와의 차이점
  <head>  
    <script>

        $(() => {
            var result_1 = $("#user_name").val();// 양식태그의 value 속성값 얻어내기

            $("#user_id").val("javascript");// 양식태그의 value 속성값 설정하기
            // 선택된 요소노드에서, 지정된 이름의 속성값을 얻어오기
            var result_2 = $("#user_id").prop("value");
            var result_3 = $("#user_id").attr("value");
            
// prop --> 동적으로 바뀐 속성값을 가져온다
// attr --> 동적으로 가져오는게 아니라, 원래 지정해 놨던 양식 태그의 value를 가져옴

            console.log("2. prop: ", result_2);
            console.log("3. attr: ", result_3);

// prop("defaultValue") --> attr처럼 기본 지정 값을 가져온다.
// var result_4 = $("#user_id").prop("defaultValue");

        });//.jq

    </script>
</head>
<body>
    <h1>객체 조작 및 생성</h1>
    <form action="#" id="form_1">
        <p>
            <label for="user_name">이름</label>
            <input type="text" name="user_name" id="user_name" value="용대리">
        </p>
        <p>
            <label for="user_id">아이디</label>
            <input type="text" name="user_id" id="user_id" value="hello">
        </p>
    </form>

</body>

 

3. Class 조작

 

addClass()

  • 요소를 선택하여 지정한 class 값을 생성

$("요소 선택").addClass("class 값");

 

removeClass()

  • 요소를 선택하여 지정한 class 값을 삭제

$("요소 선택").removeClass("class 값");

 

toggleClass()

  • 요소를 선택하여 지정한 class 값이 있으면 삭제, 없으면 생성

$("요소 선택").toggleClass("class 값");

 

hasClass()

  • 선택한 요소에 지정한 class 값이 있으면 true, 없으면 false 반환

$("요소 선택").hasClass("class 값");

    <script>

        $(() => {

            $("#p1").addClass("aqua");// class='aqua' 추가 & class속성이 없으면 생성
            $("#p2").removeClass("red");// class='red' 삭제
            $("#p3").toggleClass("green");// class='green' 추가/삭제를 번갈아 반복
            $("#p4").toggleClass("green");// class='green' 추가/삭제를 번갈아 반복
            
            // 선택한 요소노드(6번째 p태그)의 컨텐츠 지정(인자값으로)
            // text() 메소드의 인자값으로는, 5번쨰 p태그에 class='yellow'가 있는지 여부에 따라,
            // boolean 값을 전달
            $("#p6").text($("#p5").hasClass("yellow"));
        });//.jq

    </script>
    </head>
    <body>

    <p id="p1">내용1</p>
    <p id="p2" class="red">내용2</p>
    <p id="p3">내용3</p>
    <p id="p4" class="green">내용4</p>
    <p id="p5" clss="yellow">내용5</p>
    <p id="p6"></p>

</body>

 


수치 조작 메서드

 

1. 요소

width() / height()

 

2. 요소 + padding

innerWidth() / innerHeight()

 

3. 요소 + padding + border

outerWidth() / outerHeight()

    <script>

        $(() => {
            // 1.선택된 요소노드의 너비(width), 높이(height) 얻기
            var width = $("#p1").width();
            var height = $("#p1").height();
            console.log(`1. width: ${width}, height: ${height}`);

            // 2. padding + width 포함한 높이 얻기
            var innerWidth = $("#p1").innerWidth();
            var innerHeight = $("#p1").innerHeight();
            console.log(`2. innerWidth: ${innerWidth}, innerHeight: ${innerHeight}`);

            // 3. border + padding + height 포함한 높이 얻기
            var outerWidth = $("#p1").outerWidth();
            var outerHeight = $("#p1").outerHeight();
            console.log(`3. outerWidth: ${outerWidth}, outerHeight: ${outerHeight}`);

            // 인자값(px단위)대로, 선택된 요소노드의 바깥너비와 높이 설정
            // 바깥높이/너비 = border + padding + width/height
            $("#p2").outerWidth(100).outerHeight(100);

            console.groupEnd();

        });//.jq

    </script>
</head>
<body>

    <h1>수치 조작 메서드</h1>
    <p id="p1">내용1</p>
    <p id="p1">내용2</p>

</body>

 

position()

  • 선택한 포지션 위칫값 반환

$("요소 선택").position().left;

$("요소 선택").position().top;

 

offset()

  • 선택한 요소가 문서에서 수평/수직으로 얼마나 떨어져 있는지에 대한 값 반환

( 브라우저의 viewport 좌측/상단을 원점으로 위치 계산 )

$("요소 선택").offset().left;

$("요소 선택").offset().top;

 

scrollLeft() / scrollTop()

  • 브라우저의 수평/수직 스크롤 이동거리 반환 (px단위)

$(window).scrollLeft(); / $(window).scrollTop();

 


객체 편집 메서드

 

before() / after()

- 선택한 요소의 이전 / 다음 위치에 새 요소를 추가

$("요소 선택").before("새 요소");

$("요소 선택").after("새 요소");

    <script>

        $(() => {
            // <선택자>                 <새 요소>
            $("#wrap p:eq(2)").after("<p>After</p>");

            // <새 요소>                 <선택자>
            $("<p>insterAfter</p>").insertAfter("#wrap p:eq(1)");

            // <선택자>                 <새 요소>
            $("#wrap p:eq(1)").before("<p>Before</p>");

            // <새 요소>                 <선택자>
            $("<p>insertBefore</p>").insertBefore("#wrap p:eq(0)");

        }); //.jq
        
    </script>
</head>
<body>
    <div id="wrap">
        <p>내용1</p>
        <p>내용2</p>
        <p>내용3</p>
    </div>
</body>

 

 

append() /  prepend()

- 선택한 요소의 마지막 / 맨 앞 위치에 새 요소를 추가

$("요소 선택").append("새 요소")

$("요소 선택").prepend("새 요소")

              //    <새 요소>                <선택자>
            $("<li>appendTo</li>").appendTo("#listZone");   // 수직(상하)관계로 넣어라

            //    <선택자>                 <새 요소>
            $("#listZone").append("<li>append</li>");
            $("#listZone").prepend("<li>prepend</li>");

 

replaceAll() / replaceWith()

- 선택한 요소들을 새 요소로 교체

$("새 요소").replaceAll("요소 선택");

$("요소 선택").replaceWith("새 요소");

 

unwrap()

- 선택한 요소의 부모 요소를 삭제

$("요소 선택").unwrap();

 

wrap() / wrapAll()

-선택한 요소를 새 요소로 각각 / 한꺼번에 감싸기

$("요소 선택").wrap("새 요소");

$("요소 선택").wrapAll();

 

wrapinner()

- 선택한 요소의 내용을 새 요소로 각각 감싸기

$("요소 선택").wrapinner("새 요소");