본문 바로가기
IT/jQuery

[jquery] jquery 선택자 (인접선택자, 부모요소 선택자, 하위요소 선택자)

by on sunday 2020. 2. 1.
728x90
반응형

 

인접 관계 선택자

인접 관계 선택자는 선택한 요소와 가까이에 있는 요소를 선택할 때 사용합니다.

<script>
$(function(){
  $("h2").next().css("color","green");
  $("h2").parent().css("border","1px solid #f00");
});
</script>
</head>
<body>
<div class="wrap">
  <div class="inner_wrap">
    <h1>제목1</h1>
    <h2>제목2</h2>
    <p>내용1</p>
    <p>내용2</p>
    <p>내용3</p>
  </div>
</div>
</body>

wrap은 h1,h2,p의 상위 요소

h1,h2,p는 warp의 하위 요소

 

inner_wrap은 h1,h2,p의 부모(parent) 요소

h1,h2,p는 inner_wrap의 자식(children) 요소

 

h1은 h2의 형(prev)요소

p는 h2의 동생(next)요소

 

h2의 동생 선택자인 next() 함수를 사용하여

<h2>의 동생요소인 <p>내용1</p>을 선택하여 글자색을 초록색으로 적용합니다.

 

h2의 부모 선택자인 parent() 함수를 사용하여

<h2>의 부모 요소인 <div id="inner_wrap">을 선택하여 1px 빨간색 실선 테두리를 적용합니다.

 

부모 선택자

<script>
$(function(){
  $("#list_1").parent()
  .css("border","2px dashed #f00");
});
</script>
</head>
<body>
  <h1>부모 요소 선택자</h1>
  <ul>
    <li>리스트1
      <ul>
        <li id="list_1">리스트 1-1</li>
        <li>리스트 1-2</li>
      </ul>
    </li>
    <li>리스트2</li>
    <li>리스트3</li>
  </ul>
</body>

<li id=list_1">의 부모인 ul에 2px 빨간색 dashed 테두리가 적용 되었습니다. 

 

 

하위 선택자

<script>
$(function(){
  $("#wrap h1").css({"background-color":"yellow","border":"2px dashed #f00"});
});
</script>
</head>
<body>
  <div id="wrap">
    <h1>인접 관계 선택자</h1>
    <p>내용1</p>
    <section>
      <h1>하위 요소 선택자</h1>
      <p>내용2</p>
    </section>
  </div>
</body>

#wrap 안에 있는 모든 h1을 선택하여 배경과 테두리 선이 적용되었습니다.

 

적용하는 css가 여러개 일때 차이

.css("border","2px dashed #f00");

.css({"background-color":"yellow","border":"2px dashed #f00"}); 

 

자식 선택자

자식 선택자는 선택된 요소를 기준으로 지정한 자식 요소만 선택합니다.

 

$("요소 선택 > 자식 요소 선택")

$("요소 선택").children("자식 요소 선택")

$("요소 선택").childred()

<script>
$(function(){
  $("#wrap > h1").css("border","2px dashed #f00");
  $("#wrap > section").children()
  .css({"background-color":"yellow","border":"2px solid blue"});
});
</script>
</head>
<body>
  <div id="wrap">
    <h1>인접 관계 선택자</h1>
    <p>내용1</p>
    <section>
      <h1>하위 요소 선택자</h1>
      <p>내용2</p>
    </section>
</div>

$("#wrap > h1") -> #wrap 바로 밑에있는 자식요소인 h1에 테두리 적용됐습니다.

$("#wrap > section").children() ->#wrap의 자식요소인 section의 자식요소(h1,p)에 각각 css가 적용됐습니다. 

 

형(이전) / 동생(다음) 요소 선택자

$("요소 선택").prev()

-> 선택 요소 기준, 이전에 오는 형제 요소만 선택합니다.

 

$("요소 선택").next()

-> 선택 요소 기준, 다음에 오는 형제 요소만 선택합니다.

 

$("요소 선택1 + 요소 선택2")

-> 선택요소1 기준으로 바로 다음에 오는 선택한 요소2만 선택합니다.

 

<script>
$(function(){
  var style_1={
    "background-color":"pink",
    "border":"2px solid #f00"
  }
  var style_2={
    "background-color":"#ff0",
    "border":"2px dashed #f00"
  }

  $(".txt").prev()
  .css(style_1);

  $(".txt + p").css(style_2);

  $(".txt").next().next()
  .css(style_2);
});
</script>
</head>
<body>
  <div id="wrap">
    <h1>인접 관계 선택자</h1>
    <p>내용1</p>
    <p class="txt">내용2</p>
    <p>내용3</p>
    <p>내용4</p>
  </div>
</body>

.txt를 기준으로

이전 형제 요소 <p>내용1</p>

<p>내용1</p>과 다음 형제 요소<p>내용3</p>

다음 다음 형제 요소 <p>내용4</p>를 선택합니다. 

 

 

728x90
반응형

댓글