본문 바로가기

J-Query

01. J-Query의 기초

1. J-Query

 

 

J-Query 는 JavaScript 의 Library 이다.

 

 

 

1-1. J-Query 사용하는 이유



1) 사용의 편리성


2) Cross Browsing

Java Script 는 Browser 에서 해석하므로 종류나 버전마다 표현이 안되거나 다르게 되는 경우가 있다.

J-Query 에서는 내부적으로 Browser 마다 처리를 해 놓았기 때문에 신경 쓸 필요가 없다.



2) 다양한 Plugin

 

 

 

 

2. Selector

 

 

<html>
    <head>
        <meta charset="UTF-8">
        <title>J-QUERY</title>
        <link rel="icon" href="../img/chrome.png">
        <!--Content Delivery Network 방식-->
        <script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
    </head>
    <body>
        <h1>클래스가 없다.</h1>
        <h1 class="cls">클래스가 있다.</h1>
        <h1>클래스가 없다.</h1>
        <h1 class="cls">클래스가 있다.</h1>

        <p id="one">아이기다 있는 요소</p>
        <p>태그만 있는 요소</p>

        <h3>List 1:</h3>
        <ul>
            <li>HTML</li>
            <li>CSS</li>
            <li>J-QUERY</li>
        </ul>

        <h3>List 2:</h3>
        <ul>
            <li>HTML</li>
            <li>CSS</li>
            <li>J-QUERY</li>
        </ul>

        <a href="#">사이트 링크 A</a><br/>
        <a href="#">사이트 링크 B</a><br/>
        <a href="#" target="_blank">사이트 링크 C</a><br/>
    </body>
    <script>
        /* js
        // 아이디가 one 인 요소 가져와 콘솔로 찍어보기
        console.log(document.getElementById('one'));
        // 클래스가 cls 인 요소 가져와 콘솔로 찍어보기
        console.log(document.getElementsByClassName('cls'));
        // 태그가 p 인 요소 가져와 콘솔로 찍어보기
        console.log(document.getElementsByTagName('p'));
        */
        // jq
        // 기초
        console.log($('#one')); // 아이디가 one
        console.log($('.cls')); // 클래스가 cls
        console.log($('p')); // 태그가 p
        console.log($('*')); //html 이하의 모든 요소 모두

        // 000 중에서..
        console.log($('h1.cls'));//h1 태그 중에서 클래스가 cls
        console.log($('p:first'));//p 태그 중에서 첫번째 요소
        console.log($('ul li'));//ul 태그의 자식인 li

        // 복잡하면 신경 쓰지 말것
        console.log($('ul li:first'));// 첫 ul 의 자식중 첫 li
        console.log($('ul li:first-child'));// 모든 ul 의 자식중 첫 li
        
        // this 는 이벤트가 걸린 당사자
        $('p').click(function(){
            console.log($(this));
        });

        // 속성 활용
        //a 태그 중에서 href 속성을 가지고 있는 요소
        console.log($('a[href]')); 
        // a 태그 중에서 target 속성이 _blank 인 요소
        console.log($('a[target="_blank"]'));
        console.log($('a[target!="_blank"]'));

    </script>
</html>

 

<html>
    <head>
        <meta charset="UTF-8">
        <title>J-QUERY</title>
        <link rel="icon" href="../img/chrome.png">
        <!--Content Delivery Network 방식-->
        <script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
        <style>
            table, th, td{
                border: 1px solid black;
                border-collapse: collapse;
                text-align: center;
            }
            th, td{
                padding: 5px 10px;
            }
        </style>
    </head>
    <body>
        <table>
            <tr>
                <th>NO</th>
                <th>이름</th>
                <th>생년월일</th>
            </tr>
            <tr>
                <td>1</td>
                <td>김길동</td>
                <td>2018-01-01</td>
            </tr>
            <tr>
                <td>2</td>
                <td>이길동</td>
                <td>2018-01-01</td>
            </tr>
            <tr>
                <td>3</td>
                <td>박길동</td>
                <td>2018-01-01</td>
            </tr>
            <tr>
                <td>4</td>
                <td>정길동</td>
                <td>2018-01-01</td>
            </tr>
            <tr>
                <td>5</td>
                <td>홍길동</td>
                <td>2018-01-01</td>
            </tr>
        </table>
        <input type="button" value="click"/>
        <button>click</button>
    </body>
    <script>
        // odd : 홀수
        $('tr:odd').css('background-color','yellow');
        // even: 짝수
        $('tr:even').css('background-color','lightblue');
        //$('input[type="button"], button')
        console.log($(':button'));
    </script>
</html>

 

 

 

 

 

 

 

 

3. 부모-자식 관계를 이용한 Select

 

 

 

 

 

<html>
    <head>
        <meta charset="UTF-8">
        <title>J-QUERY</title>
        <link rel="icon" href="../img/chrome.png">
        <!--Content Delivery Network 방식-->
        <script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
        <style>
            .ancestors *{
                display: block;
                border: 2px solid gray;
                padding: 5px;
                margin: 15px;
            }
        </style>
    </head>
    <body>
        <div class="ancestors">
            <div>div(great-grandparent)
                <ul>ul(grandparent)
                    <li>li(parent)
                        <span>span</span>
                    </li>
                </ul>
            </div>
            <div>div(grandparent)
                <p>p(parent)
                    <span>span</span>
                </p>
            </div>
        </div>
    </body>
    <script>
        //span 의 바로 위 부모를 찾아라
        console.log($('span').parent());
        //$('span').parent().css({'border':'2px solid red'});

        //span 에서 부터 위의 부모들을 찾아라
        // 기본적으로는 html 까지 올라가서 찾는다.
        // 두번째 인자 값을 넣으면 올라가면서 해당 요소만 찾는다.
        console.log($('span').parents('div'));
        //$('span').parents('div').css({'border':'2px solid red'});

        //span 에서 부터 000 까지 사이의 부모를 찾아라
        // 당사자와 지정도니 부모는 제외
        console.log($('span').parentsUntil('.ancestors'));
        // .ancestors 까지 포함하여 빨강색 라인을 그려보기
        $('span').parentsUntil('body').css({'border':'1px solid red'});

    </script>
</html>

 

 

 

 

 

 

 

 

 

<html>
    <head>
        <meta charset="UTF-8">
        <title>J-QUERY</title>
        <link rel="icon" href="../img/chrome.png">
        <!--Content Delivery Network 방식-->
        <script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
        <style>
            .ancestors *{
                display: block;
                border: 2px solid gray;
                padding: 5px;
                margin: 15px;
            }
        </style>
    </head>    
    <body>
        <div class="ancestors">
            <div>div(great-grandparent)
                <ul>ul(grandparent)
                    <li>li(parent)
                        <span id="item">span</span>
                    </li>
                </ul>
            </div>
            <div>div(grandparent)
                <p>p(parent)
                    <span>span</span>
                </p>
            </div>
        </div>
    </body>
    <script>
        // html 까지 올라가면서 부모중 div 는 모두 찾아온다.
        $('#item').parents('div').css({'border':'2px solid red'});
        // html 까지 올라가면서 부모중 처음 찾은 div 를 가져온다.
        $('#item').closest('div').css({'border':'2px solid blue'});
    </script>
</html>

 

 

 

 

 

 

<html>
    <head>
        <meta charset="UTF-8">
        <title>J-QUERY</title>
        <link rel="icon" href="../img/chrome.png">
        <!--Content Delivery Network 방식-->
        <script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
        <style>
            .ancestors *{
                display: block;
                border: 2px solid gray;
                padding: 5px;
                margin: 15px;
            }
        </style>
    </head>    
    <body>
        <div class="ancestors">
            <div>div(great-grandparent)
                <ul>ul(grandparent)
                    <li>li(parent)
                        <span id="item">span</span>
                    </li>
                </ul>
            </div>
            <div>div(grandparent)
                <p>p(parent)
                    <span>span</span>
                </p>
            </div>
        </div>
    </body>
    <script>
        // 선택한 요소의 바로 아래 자식들을 선택
        console.log($('.ancestors').children());
        // 선택한 요소의 자식 요소들중 2번째 인자값을 만족하는 요소를 선택
        console.log($('.ancestors').find('span'));
    </script>
</html>

 

 

 

 

 

 

4. 형제 관계를 이용한 Select

 

 

 

 

<html>
    <head>
        <meta charset="UTF-8">
        <title>J-QUERY</title>
        <link rel="icon" href="../img/chrome.png">
        <!--Content Delivery Network 방식-->
        <script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
        <style>
            div.siblings *{
                display: block;
                border: 2px solid gray;
                padding: 5px;
                margin: 15px;
            }
        </style>
    </head>
    <body>
        <div class="siblings">DIV(parent)
            <p>ELEMENT 1</p>
            <span>ELEMENT 2</span>
            <span>ELEMENT 3</span>
            <span>ELEMENT 4</span>
            <h3>ELEMENT 5</h3>
            <h4>ELEMENT 6</h4>
            <h5>ELEMENT 7</h5>
            <h6>ELEMENT 8</h6>
            <p>ELEMENT 9</p>
        </div>
    </body>
    <script>
        //siblings() 선택한 요소의 동일선상 형제들( 나를 제외한)
        //$('h3').siblings().css({'border-color':'red'});
        // 두번째 인자값에 해당하는 형제들만 가져옴
        $('h3').siblings('span').css({'border-color':'red'});

        //next() : 선택한 요소 바로 다음(아래)
        $('h3').next().css({'color':'blue'});
        //prev() : 선택한 요소 바로 이전(위)
        $('h3').prev().css({'color':'green'});

        //nextAll() : 선택 요소 아래의 모든 요소(2번째 인자값만 골라온다.)
        $('h3').nextAll('h6').css({'background-color':'yellow'});
        //prevAll() : 선택 요소 위의 모든 요소(2번째 인자값만 골라온다.)
        $('h3').prevAll('span').css({'background-color':'yellow'});

        //nextUntil() : 선택요소와 인자값 요소 사이(next 방향으로)
        //prevUntil() : 선택요소와 인자값 요소 사이(prev 방향으로)
        // h3 와 p 사이의 border-color 를 변경 하시오
        $('h3').nextUntil('p').css({'border-color':'blue'});
        $('h3').prevUntil('p').css({
            'border-color':'green',
            'font-weight':600
        });
    </script>
</html>

 

 

 

 

 

5. Filtering 을 이용한 Select

 

 

 

 

<html>
    <head>
        <meta charset="UTF-8">
        <title>J-QUERY</title>
        <link rel="icon" href="../img/chrome.png">
        <!--Content Delivery Network 방식-->
        <script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
        <style>
            div{
                /*border: 1px solid black;*/
                margin: 5px;
            }
            p{
                text-align: center;
                border: 1px solid gray;
                padding: 5px;
                margin: 5px;
            }
        </style>
    </head>
    <body>
        <div>
            <p>ELEMENT 1</p>
            <p class="sel">ELEMENT 2</p>
            <p>ELEMENT 3</p>
            <p class="sel">ELEMENT 4</p>
        </div>
        <div>
            <p>ELEMENT 5</p>
            <p class="sel">ELEMENT 6</p>
            <p>ELEMENT 7</p>
            <p class="sel">ELEMENT 8</p>
        </div>
    </body>
    <script>
        // 배열 개념
        console.log($('div p').first());
        console.log($('div p').eq(0));
        console.log($('div p').last());
        console.log($('div p').eq($('div p').length-1));

        // 필터링 개념(1차 셀레터로 가져온 내용을 2차로 한번 더 걸러준다.)
        console.log($('div p').filter('.sel'));
        console.log($('div p').not('.sel'));


    </script>
</html>

'J-Query' 카테고리의 다른 글

05. 요소 추가, 요소 삭제, 요소 면적  (0) 2024.03.24
04. Animate, Method Chainin  (0) 2024.03.24
03. hide & show, Fade effect, Slide  (0) 2024.03.24
02. Event 등록, GET, SET, CSS, AddClass  (0) 2024.03.24