Programming Language/Javascript, ...

[jQuery] 선택자(2)

Ma_Sand 2022. 4. 30. 12:37
반응형

자손 선택자(>)와 후손 선택자( )

<div style="border:1px solid black">
    <ul>
        <li>div의 후손이면서 ul의 자손1</li>
        <li>div의 후손이면서 ul의 자손2</li>
        <li class="ch">div의 후손이면서 ul의 자손3</li>
        <li class="ch">div의 후손이면서 ul의 자손4</li>
        <li>
            <h3>duv/ul의 후손이면서 li의 자손</h3>
        </li>
    </ul>
    <h3>자손2</h3>
    <h3 class="ch">자손3</h3>
</div>
<script>
    $(function(){
        $("div>h3").css("color", "lightblue");
        $("div h3").css("backgroundColor", "violet");
        $("li>h3").css("color", "red");
        $("ul h3").css("color", "white");
        $("ul>li>h3").css("color", "blue");
        $("ul>.ch").css("backgroundColor", "lightyellow");
        $("li.ch").css("color", "green");
    });
</script>

 

 

 

 

속성 선택자

- 선택자[속성]: 특정한 속성을 가지고 있는 모든 요소를 선택한다.

- 선택자[속성=특정값]: 속성값이 특정값과 일치하는 모든 요소를 선택한다.

- 선택자[속성~=특정값]: 속성값에 특정값의 단어를 포함하는 요소를 선택한다.

- 선택자[속성^=특정값]: 속성값이 특정값으로 시작하는 요소를 선택한다.

- 선택자[속성$=특정값]: 속성값이 특정값으로 끝나는 요소를 선택한다.

- 선택자[속성*=특정값]: 속성값에 특정값을 포함하는 요소를 선택한다.

 

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

<script>
    $(function(){
        $("input[class]").css("backgroundColor", "lightpink");
        $("input[type=text]").css("backgroundColor", "lightyellow");
        $("input[type=text]").val("변경");
        // .val(): value 속성과 관련된 기능을 수행
        $("input[type^=ra]").attr("checked", true);
        $("input[type$=box]").attr("checked", true);
        // .attr(): html의 속성(attribute)들과 관련된 기능을 수행
        $("input[class*=est]").css("width", "100px");
        $("input[class*=st2]").css("height", "100px");
        $("input[class*=st2]").val("버튼");

        // 연속으로 메소드 호출 가능 -> 메소드체이닝
        $("input[type=button]").css("width", "50px").css("height", "50px").val("눌러");
    });
</script>

 

 

 

 

입력 양식 선택자

   : input 태그의 type 속성에 따라 선택할 수 있다.

 

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

<script>
    $(function(){
        /*
        $(":text").css("backgroundColor", "orange");
        $(":button").css({width:"200px", height:"200px"}).val("왕큰버튼");
        // 스타일을 부여할 때 객체 형태로도 사용할 수 있다.

        $(":checkbox").attr("checked", true);
        $(":radio").attr("checked", true).css({width:"50px", height:"50px"});

        // 초기화버튼
        $(":reset").css({backgroundColor:"blue", color:"white", border:"none"});
        // 제출버튼: 클릭 시 alert
        $(":submit").click(function(){
            alert("안녕");
            // 비밀번호 입력란에 있는 값을 출력해서 알림 띄우기
            alert($(":password").val());
            // .val()는 매개변수 없이 호출하면 값을 가지고 온다.
        });
        */

        // mouseenter : 선택된 요소의 경계 내부로 마우스가 들어가는 순간 발생하는 이벤트
        /*
        $(":submit").mouseenter(function(){
            $(this);  // 현재 이벤트가 발생한 요소를 알 수 있다.
            $(this).css("backgroundColor", "red");
            $(this).addClass("redStyle");
            // .addClass(): 해당 요소에 클래스를 추가하는 메소드
        });

        // moseout: 선택된 요소의 경계 밖으로 마우스가 나가는 순간 발생하는 이벤트
        $(":submit").mouseout(function(){
            $(this).css("backgroundColor", "");  // 빈 문자열: 기본 상태
            $(this).removeClass("redStyle");
            // removeClass(): 해당 요소의 클래스 제거 메소드
        });
        */

        // hover: mouseenter + mouseout
        $(":submit").hover(function(){  // mouseenter
            $(this).addClass("redStyle");
        }, function(){  // mouseout
            $(this).removeClass("redStyle");
        });
    });
</script>

 

 

 

 

상태 선택자

1. checked 선택자

   : radio, checkbox - 체크된 입력 양식을 선택한다.

  - input:checked

메뉴:
<input type="checkbox" name="menu" id="ramen">라면
<input type="checkbox" name="menu" id="chicken">치킨
<input type="checkbox" name="menu" id="pizza">피자
<input type="checkbox" name="menu" id="ddokbokki">떡볶이
<br>
<script>
$(function(){
    // 버튼 클릭 시 현재 checked 상태인 요소를 선택해서 스타일 부여
    // $("#btn").click(function(){
    //     $("input:checked").css({width:"50px", height:"50px"});
    // });

    // checkbox인 요소들에 change 이벤트 발생 시 실행
    $(":checkbox").change(function(){
        console.log($(this).prop("value") + ":" + $(this).prop("checked"));

    // html 속성값을 다룰 땐 attr / javascript 속성값을 다룰 땐 prop
    // attr로 작성하면 checked가 가져와지고, prop으로 작성하면 checked안에 있는 value가 가져와진다.
    if($(this).prop("checked")){
        $(this).css({width:"50px", height:"50px"});
    } else {
        $(this).css({width:"", height:""});
    }
    });
});
</script>

 

 

 

2. selected 선택자

   : option 중 선택된 태그를 선택한다.

  - option:selected

영화:
<select name="movie" id="movie">
    <option value="harry">해리포터</option>
    <option value="chaser">추격자</option>
    <option value="dark">다크나이트</option>
    <option value="witch">마녀2</option>
</select>

<button onclick="test();">확인</button>
<br>
선택한 영화: <label id="choice">선택안함</label>
<script>
    function test(){
        console.log($("option:selected").val());  // value값
        console.log($("option:selected").html());  // innerHTML값

    $("#choice").html($("option:selected").html());
        // 라벨에 innerHTML = 현재 선택한 innerHTML 내용
        // document.getElementById("choice").innerHTML
    }
</script>

 

 

 

3. enabled/disabled 선택자

   : 활성화/비활성화된 입력 양식을 선택한다.

  - #아이디명>:enabled

  - #아이디명>:disabled

  - .클래스명>:enabled

  - .클래스명>:disabled

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

<script>
    $(function(){
        $("#wrap>:enabled").css("backgroundColor", "yellowgreen");
        $("#wrap>:disabled").css("backgroundColor", "orange");
    })
</script>
반응형