티스토리 뷰

 

[ 1. 구조적 가상 클래스 선택자 ]

 

<!DOCTYPE html>
<html lang="ko">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>제이쿼리 - 구조적가상선택자(탐색선택자)</title>

    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-migrate/3.4.0/jquery-migrate.min.js"></script>

    <script>

        $(function(){

            console.clear();

            // 후손 선택자
            $("#menu1 li").slice(1, 3).css({ backgroundColor : "#ff0" });

            // JQuery.slice(start: number, end?: number): JQuery
            // 배열로 다루기 때문에, 인덱스 번호는 0번부터 시작된다.
            // end 번호는 작성하지 않아도 되는데, 이때는 시작번호부터 끝까지 지정되게 된다.
            // 시작번호는 포함되지만 end번호는 포함되지 않는다. ( 즉, 이때는 인덱스번호 1번과 2번이 선택된다. )

            // 구조적 가상 클래스 선택자 : li태그 중에 자식이 하나만 있는 태그만 선택한다.
            $("li:only-child").css({ backgroundColor : "#0ff" });

        }); // .jq

    </script>
    
</head>

<body>
    
    <h1>탐색 선택자</h1>

    <ul id="menu1">
        <li>내용1-1(인덱스번호0)</li>
        <li>내용1-2(인덱스번호1)</li>
        <li>내용1-3(인덱스번호2)</li>
        <li>내용1-4(인덱스번호3)</li>
    </ul>

    <ul id="menu2">
        <li>내용2-1</li>
    </ul>

</body>

</html>

[ 2. 배열순회 메소드 ]

 

<!DOCTYPE html>
<html lang="ko">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>제이쿼리 - 배열관련 메소드</title>

    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-migrate/3.4.0/jquery-migrate.min.js"></script>

    <script>

        $(function(){

            console.clear();

            // ===========================================================
            // 원소가 객체 리터럴인 배열 생성
            // ===========================================================

            let arr = [
                { area : "서울"},
                { area : "부산"},
                { area : "전주"}
            ]; // arr 배열

            // ===========================================================
            // 배열을 조작하는 다양한 제이쿼리 메소드 소개
            // ===========================================================

            $(arr).each(function(index, element){ // 배열의 순회1
                console.log( index + ":", element);
            }); // .each

            // 각각의 원소가 인덱스 번호 : 원소의 형태로 출력한다.
            // 이 경우에는 원소가 객체 리터럴이기 때문에 0: {area: '서울'}의 형태로 출력한다.

            // .each는 인덱스 번호와 원소를 하나씩 빼올 뿐이지, 이를 어떻게 활용하는지는 우리가 작성해야 한다. (*)
            // (method) JQuery.each(func: (index: number, elem: Element) => any): JQuery

            // 객체 리터럴을 생성할 때에는 키가 문자열이 되는 것을 지양하는 것이 좋다.

            console.log("==== The End1 ====");
            // ===========================================================

            // $.each($(selector), function)
            $.each($("#menu2 li"), function(i, e){ // 배열의 순회2
                console.log( i + ":", e);
            }); // $.each

            // $.each는 $(selector)에서 선택한 요소를 배열로 인덱스 번호와 원소의 값을 넘겨준다는 것이다.
            // function을 통해서 값이 넘어왔을때 어떻게 할지를 정해야 한다.
            // (method) JQueryStatic.each(collection: any, callback: (indexInArray: any, valueOfElement: any) => any): any (+1 overload)

            console.log("==== The End2 ====");
            // ===========================================================

            // $.each() 메소드 내의 this는 현재 원소를 의미한다.
            $.each($("#menu2 li"), function(i){ // 배열의 순회3
                // console.log(i + ":", $(this));
                console.log(i + ":", this);
            }); 

            // 위의 $.each와 같이 $(selector)에서 선택한 요소를 배열로 인덱스 번호와 원소의 값을 넘겨주지만, 인덱스번호만 가지고 온 것이다.

            // ===========================================================

        }); // .jq

    </script>
    
</head>

<body>

    <ul id="menu1">
        <li>내용1-1</li>
        <li>내용1-2</li>
        <li>내용1-3</li>
    </ul>

    <ul id="menu2">
        <li>내용2-1</li>
        <li>내용2-2</li>
        <li>내용2-3</li>
    </ul>

</body>

</html>


[ 3. $.map( ) / $.grep( ) 메소드 ] (***)

 

<!DOCTYPE html>
<html lang="ko">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>제이쿼리 - 배열 메소드</title>

    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-migrate/3.4.0/jquery-migrate.min.js"></script>

    <script>

        $(function(){

            console.clear();

            // 리터럴 객체를 원소로 가지는 배열 생성
            let arr1 = [ {
                area : "서울",
                name : "무대리"
            },{
                area : "부산",
                name : "홍과장"
            },{
                area : "대전",
                name : "박사장"
            },{
                area : "서울",
                name : "빅마마"
            }]; // arr1

            // ============================================================================

            // mapping 결과로 나온 것을 새로운 배열을 생성하여, let 변수에 저장 (***)
            // 사상작업 : 배열 안의 객체 중에서 사는 지역이 서울인 사람객체만 새로운 배열로 반환
            let arr2 = $.map(arr1, function(element, index){
                if( element.area == "서울"){ return element; } // if
            }); // arr2

            // let arr2 = $.map(arr1, function(element, index){
            //     return element.name; // 이름만 반환
            // }); // arr2

            // .map은 배열과 function을 넣어줘야 한다.
            // map은 필터링이 주가 아니라 사상작업이 주이다.

            console.log(arr2);
            console.log("===== The End =====")

            // ============================================================================

            // $.grep() 메소드는 필터링을 할 때 사용한다. (***)

            let arr3 = $.grep(arr1, function(e, i){

                if( e.area == "서울"){
                    return true;
                }else{
                    return false;
                } // if- else

            }); // arr3

            console.log(arr3);
            console.log("===== Second End =====")

        }); // .jq

    </script>
    
</head>

<body>
    
</body>

</html>

[ 4. 배열 메소드 - inArray( ) / isArray( ) / $.merge( ) ]

 

<!DOCTYPE html>
<html lang="ko">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>제이쿼리 - 배열메소드2</title>

    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-migrate/3.4.0/jquery-migrate.min.js"></script>

    <script>

        $(function(){

            console.clear();

            var arr1 = ["서울", "대전", "부산","전주"];
            var arr2 = ["한국","미국","일본","중국"];

            var obj = {
                name : "정부장",
                area : "서울"
            }; // obj

            // ===================================================

            // arr1이라는 배열안에 부산이라는 원소가 있는지 확인한다.
            // 찾으면 인덱스 번호를 반환해주고, 없으면 -1을 반환한다.

            let idxNum = $.inArray("부산", arr1);
            console.log(idxNum); // 2

            // ===================================================

            // 배열이 맞는지 확인한다. ( boolean 값으로 반환한다. )

            let okArray1 = $.isArray(arr1);
            let okArray2 = $.isArray(obj);

            console.log(okArray1); // true
            console.log(okArray2); // false

            // ===================================================

            // 인자로 준 여러 배열을 하나로 합쳐서 새로운 배열로 반환

            $.merge(arr2, arr1);
            console.log(arr2); // 합쳐져서 나온다.

            console.log(arr1); // 그대로 남아 있다.

            // $.merge는 오리지날 배열을 건드리기 때문에 조심해야 한다. (***)
            // 합쳐지는 배열은 처음 지정한 배열에 합쳐지며, 합쳐지는 대상의 배열은 그대로 남아 있다.

        }); // .jq

    </script>
    
</head>

<body>
    
</body>

</html>

[ 5. 배열 메소드2 - $( 요소 선택).index( $( 지정한 요소 선택) ) ]

 

<!DOCTYPE html>
<html lang="ko">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>제이쿼리 - 배열메소드3</title>

    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-migrate/3.4.0/jquery-migrate.min.js"></script>

    <script>

        $(function(){
            console.clear();

            // 선택자로 요소를 먼저 선택한 후, 지정한 요소의 인덱스 정보를 작성한다.
            let idxNum = $("li").index( $("#list3") );
            console.log(idxNum);

            // inArray와 같이 지정한 요소의 인덱스 번호를 반환하며, 없을 경우에는 -1을 반환한다. (*)

        }); // .jq
    </script>
    
</head>

<body>
    
    <h1>배열관련 메소드</h1>

    <ul>
        <li>내용1</li>
        <li>내용2</li>
        <li id="list3">내용3</li>
        <li>내용4</li>
    </ul>

</body>

</html>

[ 6. 선택자 - .val( ) ] (*)

 

<!DOCTYPE html>
<html lang="ko">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>제이쿼리 - 선택자</title>

    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-migrate/3.4.0/jquery-migrate.min.js"></script>

    <script>

        $(function(){

            console.clear();

            $("#wrap p:hidden").css({
                display : "block",
                backgroundColor : "#ff0"
            });

            // 공백을 통해 후손 선택자를 사용하고 있다.
            // 후손 중에 다은 속성에 해당하는 요소를 선택하여 값을 추출하고 있다.
            
            let z1 = $("#zone1 :selected").val();
            console.log(z1);

            let z2 = $("#zone2 :checked").val();
            console.log(z2);

            let z3 = $("#zone3 :checked").val();
            console.log(z3);

            // .val()은 값(value의 값)을 추출해낼때 사용한다.(**)

        }); // .jq

    </script>
    
</head>

<body>
    
    <div id="wrap">

        <p>내용1</p>
        <p style="display: none;">내용2</p>
        <!-- display : none은 자리조차 없애버린다. -->
        <p>내용3</p>

    </div>

    <form action="#">

        <p id="zone1">
            <select name="course" id="course">
                <option value="opt1">옵션1</option>
                <option value="opt2" selected>옵션2</option>
                <option value="opt3">옵션3</option>
            </select>
        </p>

        <p id="zone2">
            <input type="checkbox" name="hobby" value="독서">독서
            <input type="checkbox" name="hobby" value="자전거">자전거
            <input type="checkbox" name="hobby" value="등산" checked>등산
        </p>

        <p id="zone3">
            <input type="radio" name="gender" value="male">남성
            <input type="radio" name="gender" value="female" checked>여성
        </p>

    </form>

</body>

</html>


[ 7. find 메소드와 filter 메소드 ] (***)

 

<!DOCTYPE html>
<html lang="ko">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>제이쿼리</title>

    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-migrate/3.4.0/jquery-migrate.min.js"></script>

    <script>

        $(function(){

            console.clear();

            // ===========================================================

            // 1. find 메소드 : (method) JQuery.find(selector: string): JQuery (+2 overloads)

            $("#inner_1").find(".txt1").css({backgroundColor : "#ff0"}); // 노랑
            // find 메소드는 "#inner_1" 요소의  하위 요소중에 ".txt1"를 찾아서 css를 적용하는 것이다.(*)

            // ===========================================================

            // 2. filter 메소드 : (method) JQuery.filter(selector: string): JQuery (+3 overloads)

            $("#inner_1 p").filter(".txt2").css({ backgroundColor : "#0ff"}); // 아쿠아
            // "#inner_1 p" 요소의 하위 요소 중 ".txt2"를 필터링하여 css를 적용한 것이다.

            $("#inner_2 p").filter(function(idx, obj){
                console.log(idx);

                return idx % 2 == 0; // 2로 나누었을때 나머지가 0인 요소에만 적용한다. (***)
            }).css({backgroundColor : "#0f0"}); // 연두

            // find는 무엇을 찾는 것에 초점을 맞추어져있지만, filter은 말 그대로 필터링에 초점을 두고 있다.
            // id앞에 #을 붙이는 것을 까먹지 말자!! (***)

            // ===========================================================

        }); // .jq

    </script>
    
</head>

<body>

    <div id="outer_wrap">

        <h1>콘텐츠 탐색 선택자</h1>

        <section id="inner_1">
            <h2>find( ), filter( )</h2>
            <p class="txt1">내용1</p>
            <p class="txt2">내용2</p>
        </section>

        <section id="inner_2">
            <h2>filter( function )</h2>
            <p>index0</p>
            <p>index1</p>
            <p>index2</p>
            <p>index3</p>
        </section>

    </div>

</body>

</html>

[ 8. 객체 조작 메소드 - text / html 메소드 ] (****)

 

<!DOCTYPE html>
<html lang="ko">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>제이쿼리 - 객체 조작 메소드</title>

    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-migrate/3.4.0/jquery-migrate.min.js"></script>

    <script>

        $(function(){

            console.clear();

            // ===================================================

            // html메소드는 선택된 태그의 컨텐츠(텍스트 노드)를 반환
            var result1 = $("#sec_1").html();
            console.log(result1);

            //  출력  결과 : 태그가 그대로 남아있다.
            // <h2><em>html()</em></h2>
            // <p>내용1</p>

            // ===================================================

            // html메소드의 인자값으로 태그가 포함된 문자열을 주면
            // 이 문자열로 선택된 태그의 컨텐츠 지정
            $("#sec_1 p").html("<a href = \"#\">Text1</a>");

            // 태그를 그래로 컨텐츠 영역에 넣어 준다.

            // ===================================================

            // text메소드 : 선택된 태그의 컨텐츠를 일반적인 텍스트로 반환
            let result2 = $("#sec_2").text();
            console.log(result2);

            //  출력  결과 : 태그가 사라진 상태이다.
            // 텍스트()
            // 내용2

            // ===================================================

            // text메소드에 인자값으로 문자열을 주면, 이 문자열로 선택된 태그의 컨텐츠(텍스트 노드)로 지정
            $("#sec_2 h2").text("<a>text()메소드로 컨텐츠 바뀌었습니다.</a>");

            // html메소드와 다르게 태그가 인정되지 않고 문자열로 인식되어, 태그가 문자로 그대로 들어간다.

            // ===================================================

        }); // .jq

    </script>
    
</head>

<body>

    <h1><strong>객체 조작 메소드</strong></h1>

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

    <!-- em태그는 특정한 문맥을 강조할 때 사용한다. -->

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

</body>

</html>

[ 9. 객체 조작 메소드 2 - attr 메소드 ] (****)

 

<!DOCTYPE html>
<html lang="ko">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>제이쿼리 - 객체조작메소드2</title>

    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-migrate/3.4.0/jquery-migrate.min.js"></script>

    <script>

        $(function(){
            
            console.clear();

            // 1. 선택한 태그의 src 속성의 값을 얻어냄 (***)
            let srcVal = $("#sec_1 img").attr("src");
            console.log(srcVal); // 속성값 출력

            // 공백은 후손 선택자이기에, 직계가 아니더라도 선택이 가능하다.
            $("#sec_1 p img").
                // 2. 선택한 태그의 여러속성을 한번에 설정한다. (by 객체리터럴) (****)
                attr({
                    width : 200,
                    // 위의 1.에서 얻어낸 속성객체의 replace()메소드로 속성값 치환 (***)
                    src : srcVal.replace("https://picsum.photos/id/684/600/400", "https://picsum.photos/600/400"),
                    alt : "랜덤입니다."
                }). 
                // 3. 지정된 속성을 제거
                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" alt="산" border ="2"></p>
    </section>
    
</body>

</html>
728x90
댓글
«   2024/09   »
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
최근에 올라온 글
Total
Today
Yesterday
공지사항