본문 바로가기

JavaScript

[jQuery] jQuery선택자

 

기본 선택자

선택자 예제 설명
* $("*") 모든 요소를 선택
.class $(".class") 지정한 클래스를 가지는 모든 요소를 선택
element $("element") 지정된 태그명을 가지는 모든 요소를 선택
#id $("#id") 지정한 ID 속성을 가지는 하나의 요소를 선택
, $("selector1, selecotr2") 모든 지정한 선택자들의 결과들을 결합하여 선택
 
       
 <h1 id="id1">ID1</h1>
    <h2 id= "id2">ID2</h1>

    <script>
        jQuery(document).ready(function(){

            // 선택된 요소객체 속성에 접근해 값을 변경 == 순수자바스크립트
            //document.getElementById('아이디값')
            // innerHTML 대입을 통해 내용 변경
            document.getElementById('id1').style.color='red';
            document.getElementById('id2').innerHTML='안녕';

            //jQuery방식
            //$('#아이디명') 선택 요소객체 메소드 활용하여 값 변경
            $('#id2').css('color', 'pink');
            $('#id2').html('잘가');

            //.html() :innerHTML과 관련된 기능 수행 메소드

        });
//Uncaught ReferenceError: jQuery is not definedat 02_기본선택자.html:22:9
// jQuery라이브러리랑 연결 안해서 발생하는 오류!

    </script>

    <h3> *태그선택자</h3>
    <p>
        해당 태그 요소를 전부다 가져오고자 할 때 사용
    </p>

    <p>Java</p>
    <p>Oracle</p>
    <p>JDBC</p>
    <h5>HTML</h5>
    <h5>CSS</h5>
    <h5>JavaScript</h5>

    <script>
        jQuery(document).ready(function(){
        // 순수자바스크립트 방식
        // document.getElementsByTagName('태그명')
            var p = document.getElementsByTagName('p'); // 배열 반환
            //  p.style.color = 'yellow';  실행불가, 배열이라서, 배열 index접근필요

            for(var i = 0; i < p.length; i++){
                p[i].style.color = 'yellow';
            };
        

        // jQuery와 함께쓸때는 for-in문 사용불가임

        // jQuery방식
        // $('태그명')
           $('h5').css('color', 'blue');
           $('h5,p,#id1').css('background', 'pink'); // 여러개 태그 같이선택 $('태그명, 태그명')
        
        });
    </script>

    <h3>클래스선택자</h3>
    <p>
        특정 클래스 속성값을 가진 요소들을 선택하고자 할 때 사용

    </p>

    <h1 class="item select" id="item1" onclick="alert();">Class1</h1>
    <h1 class="item select" id="item2" onclick="alert();">Class2</h1>
    <h1 class="item select" id="item3" onclick="alert();">Class3</h1>

    <script>
        $(function(){
            // 순수 자바스크립트 방식
            // 대상: 클래스 속성값이 item인 요소들
            // 글자색 : orangered
            // 클릭시 경고창
            var items =document.getElementsByClassName('item');
            

            for(var i=0; i<items.length; i++){
                items[i].style.color='orangered';
                items[i].onclick = function(){            
                alert('메세지');
                }
            };

            
            $('.select').css('background','lightgray');
            $('.select').click(function(){
                alert('h1클릭');
            });

        });
    </script>
 
       

 

속성 선택자 (Attribute)

선택자 예제 설명
[attribute|='value'] $("[name|=apple]") 속성 name값이
apple이거나,
apple- 으로 시작하는 요소
[attribute*='value'] $("[name*=apple]") 속성 name값이
apple이란 단어를 포함하는 요소 (어느 위치든)
[attribute~='value'] $("[name~=apple]") 속성 name값이
apple이거나
apple 공백 / 공백 apple 으로 구분된 단어를 포함하는 요소
[attribute$='value'] $("[name$=apple]") 속성 name값이
apple이거나
apple로 정확히 끝나는 값인 요소
비교는 대소 문자를 구분함.
[attribute='value'] $("[name=apple]") 속성 name값이
정확히 apple인 요소
[attribute!='value'] $("[name!=apple]") 속성 name값이
apple을 아예 갖지 않거나,
apple 이외의 값을 갖지 않는 요소
[attribute^='value'] $("[name^=apple]") 속성 name값이
apple이거나,
apple로 정확히 시작하는 요소
[attribute] $("[name]") 속성 name을 갖고있는 요소
[attribute='value'][attribute2='value2'] $("[name=apple][name2=banana]") 각 속성 선택자들이 and로 일치하는 요소

 

 <input type="text"><br>
    <input type="number" class="test test3 test4 test1"><br>
    <input type="radio"><br>
    <input type="checkbox"><br>
    <input type="button" value="button" class="test2"><br>

 
    <script>
         /*
        $(function(){
            $('input[class]').css('background','lightpink');
            $('input[type=text]').val('안녕!');
            // input은 빈태그이기떄문에 컨텐츠영역이 존재하지 않음, 내부에 내용을 넣으려면
            // html이 아니라 value 속성으로 넣아야함
            // jQuery.val() =-> value 속성접근
            // css() html() val()
            // .val(): value속성과 관련돈 기능 수행
            $('input[class~=test]').val('1234');
            //~은 공백 기준으로 완전한 단어여야함, test2는 test를 포함하는 것으로 보지 않음

            $('input[type^=radio]').attr('checked', true);
            $('input[type$=box]').attr('checked', true);

            // .attr() : 그 외 속성들과 관련된 기능 수행

            $('input[class*=st2]').css('width', '100px');
            $('input[class*=st2]').css('height', '100px');
            $('input[class*=st2]').val('버튼');

            // 메소드 체이닝
            $('input[class*=st2').css('width','50px').css('height','50px').val('button');
            // . : 참조연산자
            // 포인터의 이름이나 주소 앞에 사용하여, 포인터에 가리키는 주소에 저장된 값을 반환
            // $('input[class*=st2').css('width','50px')의 반환값은 요소임
            // 그러니까 거기서 다시 참조연산자(.)을 사용할 수 있는 것임

        });
*/

    </script>

입력 양식 폼(Form) 필터 선택자

선택자 예제 설명
:button $(":button") input 태그중 type 속성이 button인 문서 객체와 button 태그를 선택
:checkbox $(":checkbox") 체크박스 유형의 모든 요소 선택
:checked $(":checked") 체크되거나 선택된 모든 요소와 일치한 요소 선택
:disabled $(":disabled") 비활성화된 모든 요소 선택
:enabled $(":enabled") 활성화된 모든 요소 선택
:file $(":file") 파일 유형의 모든 요소를 선택
:focus $(":focus") 현재 포커스가 있는 요소 선택
:image $(":image") 이미지 유형의 모든 요소 선택
:input $(":input") 모든 input, textarea, select, button 요소 선택
:password $(":password") 패스워드 유형의 모든 요소 선택
:radio $(":radio") 라디오 유형의 모든 요소 선택
:reset $(":reset") reset 유형의 모든 요소 선택
:selected $(":selected") 선택된 모든 요소 선택
:submit $(":submit") submit 유형의 모든 요소 선택
:text $(":text") text 유형의 모든 input 요소 선택

 

 

 텍스트상자: <input type="text"><br>
    일반버튼 : <input type="button"><br>
    체크박스: <input type="checkbox"><br>
    첨부파일: <input type="file"><br>
    비밀번호: <input type="password"><br>
    라디오버튼: <input type="radio"><br>
    초기화버튼: <input type="reset"><br>
    제출: <input type="submit"><br>
    제출2: <input type="submit"><br>

    <script>
        $(function(){
        //    $(':text').css('background','red');
       //     $(':button').css('width','200px').css('height', '200px').val('왕버튼');
       //       $(':button').css({width: '200px', height:'200px'}).val('왕버튼');
              // 한번에 객체타입으로 다룰 수 있음!
              // 부여하고자 하는 스타일에 대해 객체 형태로 묶어서 사용도 가능
       //       $(':checkbox').attr('checked',true);

       $(':file').css('background','yellow');
       $(':password').css('background','yellowgreen');
       $(':radio').attr('checked',true).css({width: '50px', height: '50px'});
       $(':reset').css({
            background:'blue', 
            color:'white', 
            border:'none'
        });
       $(':submit').click(function(){ 
        //alert('잠오는 오후')
        //비밀번호 입력란에 작성한 값을 경고창에 띄워보기
        // JS : document.getElementById()  
        // Property -> value -> setting (setter역할)

        // field  : 객체가 가지고 있는 속성
        // setter- getter 
        // JS : 변수.속성명 == getter
        // JS : 변수.속성명 = setter()

        //alert($(':password').val());
        //password의 value 값을 가져올 떄 val()
        // .val(): 인자값 없이 메소드를 호출하면 해당 값을 불러옴
        // setter/getter역할 동시수행
       });
       // mouseenter: 요소의 경계 안으로 들어갈떄
       $(':submit').mouseenter(function(){
           //$(':submit').css('background', 'pink');
           // 현재이벤트가 발생한 js객체(이벤트타겟 요소객체)에 접근하는 방법
           // window.event.target == e.target == this
           
//           this.css('background', 'pink');
           // 자바스크립트 객체에 jQuery메소드가 있을리가~~
        //    this.style.background='pink';
        //     $(this).css('background', 'pink');
        //     // this를 jQuery요소객체로 바꾸는 방법: $(js객체)

        // 고오급기술: 직접 css()를 호출하여 스타일을 부여하는 것이 아니라 
        // 클래스 속성값을 추가하여 이미 정의된 style 입히기
        // 자바스크립트 방식
        //btn3.classList.add('style');
        //btn3.classList.remove('style');
        

        //jQuery
        // $(this).addClass('부여하고싶은 클래스속성값')
        $(this).addClass('pinkStyle');
        // .addClass(): 선택된 요소에 클래스 속성값을 추가해주는 메소드


        });

        // mouseenter<->mouseoout: 요소의 경계밖으로 나갈때
        // $(':submit').mouseout(function(){
        //     $(this).removeClass('pinkStyle');
        // })

        // mouseenter + mouseout : hover
        $(':submit').hover(function(){
            $(this).addClass('pinkStyle');
        }, function(){
            $(this).removeClass('pinkStyle');

        })

        // hover(앞쪽 이벤트핸들러-mouseenter , 뒤쪽 이벤트헨들러-mouseout)
   });

      </script>
 취미: <input type="checkbox" name="hobby" class="hobby" value="영화보기">영화보기
     <input type="checkbox" name="hobby" class="hobby" value="게임하기">게임하기
      <input type="checkbox" name="hobby" class="hobby" value="산책하기">산책하기
    
    <button id="btn1"> 취미는 무엇입니까? </button>
    <script>
        $(function(){
            // 버튼 클릭시 현재 checked된 요소만 선택하여 스타일 부여
            $('#btn1').click(function(){
              //  $('input:checked').css({width:'50px', height:'50px'});
            // "자바스크립트" 방식으로
            // 버튼클릭시 현재 checked된 요소만 선택하여
            // alert창으로
            //당신의 취미는 xxxxx이군요? 형식으로 출력
                // input= document.getElementsByClassName('hobby');      
                // var value=" ";      
                // for(var i=0; i<input.length; i++){
         
                //     if(input[i].checked){
                //         value +=input[i].value;
                       
                //     };
                // };
                // alert('당신의 취미는'+value+'이군요?');


                // jQuery방식
                str = ' ';
                $('input[name=hobby]').filter(':checked').each(function(){
                    str += $(this).val() + ' ';
                });
                console.log(str);

        })
    });
    </script>

    <h4>
        -selected 상태 선택자(select>option)</h4>

    <p>
        option 요소객체 중 선택된 태그를 선택<br>  
        $('option:selected')
    </p>

    지역: 
    <select name="location">
        // key는 select 태그의 name 속성값값
        // value속성 있을시 value속성값이,
        // value 속성 없을시 content영역이 value로 넘어감
        <option value="X">선택안함</option>
        <option value="NY">남양주</option>
        <option value="GW">강원도</option>
        <option value="BS">부산</option>
        
    </select>

    <button onclick="test();">확인</button>
    <br>
    선택한 지역: <label for="" id="result">없음</label>

    <script>
        function test(){
            // 현태 선택된 목록을 가져옴(option의 selected)
            console.log($('option:selected').val()); // NY
            console.log($('option:selected').html()); //남양주
            document.getElementById('result').innerHTML = $('option:selected').html(); 
            // 자바스크립트와 제이쿼리 같이사용 가능



            //$('#result').html($('option:selected').html());
            // html(): 인자값 없을시 html문서 내용을 가져오는 getter역할 , 
            // html(인자값): setter역할
            //jQuery선택자 선택시 선택결과가 배열로 옴
            // S.fn.init [option, prevObject: S.fn.init(1)]
            // [[Prototype]]:Object

        }
    </script>

    <h4> - enabled, disabled 상태(input, button, textarea...) </h4>
    <p>
        활성화/비활성화된 요소 선택<br>
        :enabled <br> 
        :disabled <br>

        <div id="wrap">
            활성화 텍스트상자: <input type="text"><br>
            비활성화 텍스트상자: <input type="text" disabled><br>
            활성화 버튼: <input type="button">버튼<br>
            비활성화 버튼: <input type="button" disabled>버튼2<br>


        </div>

        <script>
            $(function(){
                $('#wrap>:enabled').css('background','yellowgreen');
                $('#wrap>:disabled').css('background','greenyellow');
            });
        </script>

 

부모선택자(parent)

  - $('선택자').parent()
            선택된 요소를 기준으로 바로 상위 부모요소 하나만을 선택<br>
            - $('선택자').parents() <br>
            선택된 요소를 기준으로 모든 상위 부모/조상요소를 선택<br>
            - $('선택자').parents('선택자') <br>
            선택된 요소를 기준으로 모든 상위 부모/조상요소 중에서 제시한 값과 일치하는 상위요소 선택<br>
            - $('선택자').parentsUntil('선택자') <br>
            선택된 요소를 기준으로 모든 상위 부모/조상요소 중에서 제시한 값까지 상위요소 선택
 
 <script>
        $(function(){
        // parent() parents() parents('선택자') parentsUntil('선택자')
        
        // parent()
        $('span').parent().css({color:'purple', border:'2px solid skyblue'});
        
        // parents()
        $('li').parents().css('color','lightgreen');
        // parents로 선택시 상위 모든요소(body 포함)바뀜

        // parents(선택자)
        $('li').parents('div').css('border','2px dashed magenta');
    
  
        //parentsUntil('선택자')
        $('span').parentsUntil('div').css('color','lightpink');
    });
    </script>

자식 선택자 (child)

- $('선택자').children()

선택된 요소를 기준으로 모든 자손(바로 하위)요소들을 선택

-$('선택자').children('선택자')

선택된 요소를 기준으로 모든 자손요소들 중에서 제시값과 일치하는 요소선택

-$('선택자').find('선택자')

선택된 요소를 기준으로 모든 후손요소 중에서 제시한 값과 일치하는 요소들만 선택

 <script>
        $(function(){
            // 객체형태로 css부여
            // 앞으로 부여할 스타일 객체
            var style1 = {
                color: 'red',
                border: '2px solid red',
            }
            var style2 = {
                color: 'blue',
                border: '2px solid blue',
            }
            var style3= {
                color: 'green',
                border: '2px solid green',
            }
            var style4 = {
                color: 'orange',
                border: '2px solid orange',
            }

            var style5 = {
                color: 'greenyellow',
                border: '2px solid greenyellow',
            }
            // children
            $('.wrap').children().css(style1);
            $('.wrap').children().children().css(style1); //자손의 자손
            //children메소드 쓰면서 선택자

            // children('선택자')
            $('.wrap').children().children('ul').css(style3); //자손의 자손

            // find('선택자')
            $('.wrap').find('li').css(style4);
            $('.wrap').find('span').css(style5);

        });

        // children
    </script>

 

- $('선택자').siblings()

선택된 요소를 기준으로 같은 레벨에 있는 모든 요소들을 선택 (선택요소는 제외)

- $('선택자').siblings('선택자')

선택된 요소를 기준으로 같은 레벨에 있는 모든 요소 중에서 제시한 값과 일치하는 요소들 선택

- $('선택자').next()

선택된 요소를 기준으로 같은 레벨에 있는 모든 요소 중 바로 다음요소 하나만 선택

- $('선택자').nextUntil('선택자')

선택된 요소를 기준으로 같은 레벨에 있는 모든 요소 중 내 뒤에 있는 요소부터 제시한 값과 일치하는 요소를 만나기 전까지만 선택

- $('선택자').prev()

선택된 요소를 기준으로 같은 레벨 모든 요소중 바로 이전 요소 딱하나 선택

- $('선택자').prevAll()()

선택된 요소를 기준으로 같은 레벨 모든 요소중 바로 이전 요소 모두 선택

- $('선택자').prevUntil()()

선택된 요소를 기준으로 같은 레벨에 있는 모든 요소 중 내 앞 요소부터 제시한 값과 일치하는 요소 만나기 전까지 선택

     <div class="wrap">
        <p>p</p>
        <div>div</div>
        <span></span>
        <h2>h2 - 기준점</h2>
        <h3>h3</h3>
        <p>p</p>
     </div>
 <script>
        $(function(){
            // 객체형태로 css부여
            // 앞으로 부여할 스타일 객체
            var style1 = {
                color: 'red',
                border: '2px solid red',
            }
            var style2 = {
                color: 'blue',
                border: '2px solid blue',
            }
            var style3= {
                color: 'green',
                border: '2px solid green',
            }
            var style4 = {
                background: 'orange',

            }

            var style5 = {
                color: 'greenyellow',
                border: '2px solid greenyellow',
            }
         
            // siblings : 본인은 제외
            $('h2').siblings().css(style1);
            $('h2').siblings('p').css(style2);

            // next계열: 
            $('h2').next().css(style3);
            // 나의 바로 아래 1개
            $('h2').nextAll().css(style4);
            $('h2').nextUntil('p').css('font-size','30px');

            $('h2').prev().css('background', 'orangered');
            $('h2').prevAll().css('color', 'black');
            $('h2').prevUntil('p').css('border', '4px dotted purple');



        });

        // children
    </script>

 

선택자 예제 설명
:first-child $("div:first-child") 부모의 첫 번째 자식인 모든 요소를 선택
:first-of-type $("div:first-of-type") 동일한 요소 이름의 형제 중 첫 번째 요소를 모두 선택
:last-child $("div:last-child") 부모의 마지막 하위 요소인 모든 요소를 선택
:last-of-type $("div:last-of-type") 동일한 name 요소의 형제 중 마지막 요소인 모든 요소를 선택
:nth-child(index/even/odd/equation) $("div:nth-child(2)") 부모의 n 번째 자식인 모든 요소를 선택
:nth-last-child(index/even/odd/equation) $("div:last-child(2)") 마지막 요소에서 첫 번째 요소까지 계산하여 부모의 n 번째 자식인 모든 요소를 선택
:nth-last-of-type(index/even/odd/equation) $("div:nth-last-of-type(2)") 마지막 요소부터 첫 번째 요소까지 같은 name 요소를 가진 형제와 관련하여 부모의 n 번째 자식인 모든 요소 선택
:nth-of-type(index/even/odd/equation) $("div:nth-of-type(2)") 동일한 name 요소를 갖는 형제와 관련하여 부모의 n번째 자식인 모든 요소 선택
:only-child $("div:only-child") 부모의 유일한 자식인 모든 요소를 선택
:only-of-type $("div:only-of-type") 동일한 name 요소를 갖는 형제 노드가 없는 모든 요소 선택

계층 선택자 (Hierarchy)

선택자 예제 설명
> :: parent > child $("ul > li") "parent"로 지정된 요소의 "child"로 지정된 모든 직접 자식 요소 선택
(공백) :: ancestor descendant $("form input") 지정된 조상의 자손인 모든 요소 선택
+ :: prev + next $("label+input") 형제 "prev"가 바로 앞에 오는 "next"와 일치하는 다음 요소 모두 선택
~ :: prev~siblings $("#prev~div") "prev"요소 다음에 오는 모든 형제 요소를 선택하고, 상위 요소가 같으며 필터링 "siblings" 선택자와 일치하는 요소

 

 

 

기본 필터 선택자(Basic Filter)

선택자 예제 설명
:odd $("div:odd") 홀수 번째에 위치한 문서 객체를 선택함
:even $("div:even") 짝수 번째에 위치한 문서 객체를 선택함
:first $("div:first") 첫 번째 위치한 문서 객체를 선택함
:last $("div:last") 마지막에 위치한 문서 객체를 선택함

 

  <h1>필터링 관련 선택자 및 메소드</h1>
    <h3>* 필터관련 선택자 </h3>
    <!-- table>tr*5>td*3 -->
    <table border="1">
        <!-- 5행 3열  -->
        <tr>
            <td>이름</td>
            <td>MBTI</td>
            <td>혈액형</td>
        </tr>
        <tr>
            <td>홍길동</td>
            <td>ENTP</td>
            <td>B형</td>
        </tr>
        <tr>
            <td>이순신</td>
            <td>JDBC</td>
            <td>A형</td>
        </tr>
        <tr>
            <td>안철수</td>
            <td>INFP</td>
            <td>AB형</td>
        </tr>
        <tr>
            <td colspan="2">총 인원</td>
            <td>3명</td>
        </tr>
    </table>

        <script>
            $(function(){
                //: first :last :even :odd
                $('tr:first').css('background', 'black').css('color', 'white');
                // first:  첫번째 요소를 의미
                $('tr:last').css({background:'orangered', color:'white'});
                // last: 마지막요소를 의미
                $('tr:even').css('background', 'gray');
                // 짝수번째 요소 의미 (단, 시작은0부터)
                $('tr:odd').css('background','yellowgreen');
                //odd 홀수번째 요소 의미(단, 시작은0부터)

            });

        </script>
        <h3> * 필터관련 메소드</h3>
        <p>
            기준이 되는 요소 중에서 특정 요소만 걸러서 선택해주는 메소드
            first(), last(), filter(), not()
         </p>
        <h4 class="test">test-1</h4>
        <h4 class="test">test-2</h4>
        <h4 class="test">test-3</h4>
        <h4 class="test">test-4</h4>
        <h4>test-5</h4>
        <h4 class="test">test-6</h4>
    
        <script>
            $(function(){
                $('h4').first().css('font-size','20px');
                $('h4').last().css('font-size','50px');

                //.filter('선택자'): 기준 중에서 해당 선택자만 선택
                $('h4').filter('.test').html('ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ');
                //.not('선택자'): 기준 중에서 해당 선택자가 아닌것만 선택
                $('h4').not('.test').css('color', 'skyblue');

                //******* .eq(위치): 0부터 시작, 몇번째 요소 선택할것인지
                $('h4').eq(0).text('<b>eq(0) 선택됨 </b>');
                // test(): 선택된 요소의 innerText와 관련된 기능 수행


            });
        </script>

 

함수 필터 선택자(function Filter)

선택자 예제 설명
:eq(index) $("div:eq(1)") 일치하는 집합 내의 인덱스 n에 있는 요소를 선택
:gt(index) $("div:gt(2)") 일치하는 세트 내의 인덱스보다 큰 인덱스에서 모든 요소를 선택
:lang(language) $("div:lang(en-us)") 지정된 언어의 모든 요소를 선택
:lt(index) $("div:lt(4)") 일치하는 집합 내의 인덱스보다 작은 인덱스에서 모든 요소를 선택
:not(selector) $("div:not(:checked)") 지정된 선택자와 일치하지 않은 모든 요소를 선택
:contains(text) $("div:contains('Hello'") 지정된 텍스트를 포함하는 모든 요소를 선택
:has(selector) $("div:has(p)") 지정한 선택자와 일치하는 요소를 하나 이상 포함하는 요소를 선택
:animated $("div:animated") 선택자를 실행할 때 애니메이션 진행 상태에 있는 모든 요소를 선택
":not(:animated)" => 애니메이션중이지 않은것

 

 

 

 

출처:

https://inpa.tistory.com/entry/jQuery-📚-제이쿼리-선택자-Selector-💯-정리#계층_선택자_(Hierarchy) [👨‍💻 Dev Scroll:티스토리]