본문 바로가기

언어공부/JavaScript&jQuery

제이쿼리(jQuery) 기초 문법 - 선택자 (3) 인접 관계 선택자

제이쿼리(jQuery) 기초 문법

선택자

선택자는 HTML요소를 선택하여 가져온다. 제이쿼리 선택자는 CSS선택자와 마찬가지로 선택한 요소의 디자인 속성을 적용할 때 사용할 수 있다. 이때 HTML에 작성한 스타일을 사용자의 동작에 의해 스타일을 변경할 수 없기 때문에 HTML에서 작성한 스타일(CSS)는 정적이다라고 표현한다. 하지만 제이쿼리 선택자를 사용하면 동적으로 스타일을 적용할 수 있다. 

 

기본 선택자

영역에 있는 문서 객체를 선택할 수 있는 선택자를 알아보자. 제이쿼리의 기본 선택자는 다음과 같이 직접 선택자와 인접 관계 선택자로 나눌 수 있다.

 

인접 관계 선택자

인접 관계 선택자는 직접 선택자로 요소를 먼저 선택하고 그 다음 선택한 요소와 가까이에 있는(이전과 다음 요소)요소를 선택할 때 사용한다. 자유자재로 사용하려면 문서 객체 구조와 관계를 잘 이해하고 있어야 한다.

 

<body>
<div id="first">
	<div id="second">
    	  <h1>제목1</h1>
          <h2>제목2</h2>
          <p>내용</p>
    </div>
</div>
</body>

 

여기서 id가 first인 div태그는 상위(closest)요소 이고, 안에 있는 태그들은 하위 요소이다.

id가 second인 div태그는 그 안에 있는 태그들의 부모(parent)요소이고, 안에 있는 태그들은 자식(children)요소이다.

<h1>태그는 <h2>태그의 형(prev)요소이고, <p>태그는 <h2>태그의 동생(next) 요소이다.

 

부모 요소 선택자

부모 요소 선택자는 선택한 요소를 감싸고 있는 부모 요소를 선택한다.

 

<script src="js/jquery.js"></script>
<script>
$(funtion(){
	$("#list").parent().css("border","1px solid red");
});
</script>
</head>
<body>
	<h1>안녕하세요</h1>
    <ul id="wrap">
    	<li>
	    <ul>//해당 태그가 선택됨
            	<li id="list">리스트1-1</li>
            	<li>리스트1-2</li>
            </ul>
        </li>
        <li>리스트2</li>
        <li>리스트3</li>
    </ul>
</body>

 

하위 요소 선택자

하위 요소 선택자는 기준 요소로 선택한 하위 요소만 선택한다.

 

<script src="js/jquery.js"></script>
<script>
$(funtion(){
	$("#wrap h1").css("border","1px solid red");
});
</script>
</head>
<body>
	<h1>안녕하세요</h1>
    <ul id="wrap">
    	<li>
	    <ul>
		<h1>추천 리스트</h1>//해당 태그가 선택됨
            	<li id="list">리스트1-1</li>
            	<li>리스트1-2</li>
            </ul>
        </li>
        <li>리스트2</li>
        <li>리스트3</li>
    </ul>
</body>

 

id값이 "wrap"인 요소가 감싸고 있는 <h1>을 모두 선택한다.

 

자식 요소 선택자

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

 

<script src="js/jquery.js"></script>
<script>
$(funtion(){
	$("#wrap > h1").css("border","1px solid red");
    $("#wrap > section").children().
    css({
       "border":"1px solid blue",
       "background-color":"yelow"
    });
});
</script>
</head>
<body>
	<h1>안녕하세요</h1>
    <div id="wrap">
    	<h1>반갑습니다</h1>//$("#wrap > h1")
        <p>내용</p>
        
        <section>//$("#wrap > section").children()
            <h1>yeony입니다</h1>
            <p>내용</p>
        </section>
    </div>
</body>

 

선택한 요소에 스타일을 적용하는 방법

 

//1. 인자값을 사용해 CSS속성과 값을 전달하는 방식
$("요소 선택").css("속성명1","값1").css("속성명2","값2");
//2. 객체를 사용해 CSS속성과 값을 전달하는 방식
$("요소 선택").css({"속성명1":"값1", "속성명n":"값n"});

 

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

형 요소 선택자는 선택한 요소를 기준으로 바로 이전 형제 요소만 선택한다. 그리고 동생 요소 선택자는 선택한 요소를 기준으로 바로 다음 형제 요소만 선택한다.

 

<script src="js/jquery.js"></script>
<script>
$(function(){
	$(".cont").prev().css("border","1px solid red");
    $(".cont+p").css("border","1px solid blue");
    $(".text").next().css("border","1px solid yello");
});
</script>
</head>
<body>
    <div id="wrap">
    	<h1>안녕하세요</h1>
        <p>내용1</p>//$(".cont").prev()
        <p class="cont">내용2</p>
        <p class="text">내용3</p>// $(".cont+p")
        <p>내용4</p>// $(".text").next()
        <p>내용5</p>
    </div>
</body>

 

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

전체 형 요소 선택자는 선택한 요소를 기주으로 이전에 오는 전체 형제 요소를 선택한다. 그리고 전체 동생 요소 선택자는 선택한 요소를 기준으로 다음에 오는 전체 형제 요소를 선택한다.

 

<script src="js/jquery.js"></script>
<script>
$(funtion(){
	$(".cont").prevAll().css("border","1px solid red");
    $(".cont").nextAll().css("border","1px solid blue");
   
});
</script>
</head>
<body>
    <div id="wrap">
    	<h1>안녕하세요</h1>//$(".cont").prevAll()
        <p>내용1</p>//$(".cont").prevAll()
        <p class="cont">내용2</p>
        <p >내용3</p>//$(".cont").nextAll()
        <p>내용4</p>//$(".cont").nextAll()
    </div>
</body>

 

전체 형제 요소 선택자

전체 형제 요소 선택자는 선택한 요소의 모든 형제 요소를 선택한다.

 

<script src="js/jquery.js"></script>
<script>
$(funtion(){
	$(".cont").siblings().css("border","1px solid red");
});
</script>
</head>
<body>
    <div id="wrap">
    	<h1>안녕하세요</h1>//$(".cont").siblings()
        <p>내용1</p>//$(".cont").siblings()
        <p class="cont">내용2</p>
        <p >내용3</p>//$(".cont").siblings()
        <p>내용4</p>//$(".cont").siblings()
    </div>
</body>

 

범위 제한 전체 형/동생 요소 선택자

범위 제한 전체 형/동생 요소 선택자는 선택한 요소를 기준으로 형제 요소 중 지정한 범위 내의 전체 형 요소 또는 전체 동생 요소를 선택한다.

 

<script src="js/jquery.js"></script>
<script>
$(funtion(){
	$(".cont").prevUntil(".title").css("border","1px solid red");
    $(".cont").nextUntil(".cont2").css("border","1px solid blue");
});
</script>
</head>
<body>
    <div id="wrap">
    	<h1 class="title">안녕하세요</h1>//$(".cont").prevUntil(".title")
        <p>내용1</p>//$(".cont").prevUntil(".title")
        <p class="cont1">내용2</p>
        <p >내용3</p>//$(".cont").nextUntil(".cont2")
        <p class="cont2">내용4</p>//$(".cont").nextUntil(".cont2")
    </div>
</body>

 

상위 요소 선택자

상위 요소 선택자는 선택한 요소를 기준으로 모든 상위 요소를 선택하거나 상위 요소 중 선택하고자 하는 요소만 선택할 때 사용한다.

 

<script src="js/jquery.js"></script>
<script>
$(funtion(){
	$(".txt1").parents().css("border","1px solid red");
    $(".txt2").parents().("div").css("border","1px solid blue");
});
</script>
</head>
<body>//$(".txt1").parents()
    <h1 class="title">안녕하세요</h1>//$(".txt1").parents()
    <section>//$(".txt1").parents()
    	<div>//$(".txt1").parents()
        	<p class="txt1">내용</p>
        </div>
    </section>
    <section>
    	<div>// $(".txt2").parents().("div")
        	<p class="txt2">내용</p>
        </div>
    </section>	
    </div>
</body>

 

가장 가까운 상위 요소 선택자

가장 가까운 상위 요소 선택자는 선택한 요소를 기준으로 가장 가까운 상위 요소만 선택할 때 사용한다.

 

<script src="js/jquery.js"></script>
<script>
$(funtion(){
	$(".txt1").closest().css("border","1px solid red");
});
</script>
</head>
<body>
    <h1>안녕하세요</h1>
    	<div>
        	<p>내용</p>
        </div>
    	<div>//$(".txt1").closest()
        	<p class="txt1">내용</p>
        </div>
    </div>
</body>

 

class값이 txt1인 요소를 기준으로 상위 요소 중 가장 가까운 <div>를 선택한다.