포스트

03. 순회(탐색) 메소드(1)

1) 순회(탐색) 메서드(1)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[html]
✔️ 순회(탐색) 메서드1
Ancestors(조상) 메서드 :
- 선택된 요소의 상위 요소들을 선택할 수 있는 메서드

$('요소명').parent()
- 선택된 요소의 바로 위 상위 요소

$('요소명').parents([매개변수])
- 선택된 요소의 모든 상위 요소들을 리턴
- 매개변수가 있으면 매개변수와 일치하는 부모만 리턴

$('요소명').parentsUntil([매개변수])
- 선택된 요소부터 매개변수 요소까지 범위의 요소 리턴
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[html]
<div class = "wrap"> hello
  <div class = "type"> div(greate-grand parent)
    <ul> ul (grand-parent)
      <li> li (direct parent)
        <span>span</span>
      </li>
    </ul>
  </div>
</div>

<div class = "type"> div(grand parent)
  <p> p (direct parent)
    <span>span</span>
  </p>
</div>
1
2
3
4
5
6
7
8
9
10
11
[css]
.wrap *{
  border : 1px solid lightgray;
  display : block;
  padding : 5px;
  margin : 15px;
  color : gray;
}
. type {
  width : 500px;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<script>
  $(() => {
    // parent() : 선택된 요소의 바로 상위 요소(부모)를 선택
    // span태그의 부모 요소의 테두리, 글자색 변경
    $('span').parent().css("border", "2px solid red").css("color","red");
    
    // parents([매개변수]) : 선택된 요소의 모든 상위 요소를 선택
    // 매개변수가 있을 경우 매개변수에 맞는 상위 요소들만 선택
    
    // li 태그의 모든 상위 요소의 글자색을 파란색으로 변경
    $('li').parents().css("color", "blue");
    
    // li 태그의 상위 요소 중 div만 선택하여 테두리 변경
    $('li').parents('div').css("border", "2px dashed magenta");
    
    // parentsUntil(매개변수)
    // 선택된 요소부터 매개변수에 지정된 요소 이전까지의 상위 요소들을 선택
    
    // span 태그부터 상위 요소 중
    // div태그를 만나기 이전까지 요소를 선택하여 배경색 변경
    $('span').parentsUntil('div').css("backgroundColor", "springgreen");
  });
</script>
  • 연습문제

    ### 박스 색 바꾸기

    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    
      <!-- box 색 칠하는 함수를 만든다 -->
      <script>
        function paint(box, input){
          box.css("backgroundColor", input.val());
        }
      </script>
        
      <div class="section1">
        <div class="outBox">
          <div class="inBox"></div>
          <input type="text" id="sec1_input">
        </div>
      </div>
      <button type="button" id="btn1">확인</button>
        
      <script>  
        // 색이 칠해지는 box와 input값을 변수에 넣고, paint함수의 매개변수로 넣어준다
        $('#btn1').on("click", () => {
          const box1 = $(".section1 > div > div");
          const input1 = $("#sec1_input");
          paint(box1, input1);
        });
      </script>
        
      <hr>
        
      <div class="section2">
        <div class="outBox">
          <div class="inBox"></div>
          <input type="text" class="sec2_input">
        </div>
        
        <div class="outBox">
          <div class="inBox"></div>
          <input type="text" class="sec2_input">
        </div>
        
        ... 6개 생성
      </div>
      <button type="button" id="btn2">확인</button>
        
      <script>
        const box2 = $(".section2 .inBox");
        const input2 = "(".section2 .sec2_input")";
          
        for(let i = 0; i > box2.length; i++){
          $("#btn2").on("click", () => {
            <!-- 클래스를 지정했기 때문에 배열형태로 변수에 저장됨.
            배열의  인덱스 값을 다시 제이쿼리로 감싸준다 -->
            paint($(box2[i], $(input2[i])));
          });
        }
      </script>
        
      <hr>
        
      <div class = "section3">
        <div class="outBox">
          <div class="inBox"></div>
          <input type="text" class="sec3_input">
        </div>
          
        <div class="outBox">
          <div class="inBox"></div>
          <input type="text" class="sec3_input">
        </div>
        
        ... 6개 생성
      </div>
        
      <script>
        const box3 = $(".section3 .inBox");
        const input3 = $(".section3 .sec3_input");
          
        for(let i = 0; i < box3.length; i++){
          $(input3[i]).on("input", (e) => {
            paint($(box3[[i]), $(input3[i]));
            $(e.target).css("borderColor", $(e.target).val());
          });
        }
      </script>