태그 찾기
find는 어떤 특정 태그 안에 속한 태그를 선택하는 기능을 갖고 있습니다.
말로하면 어려우니 소스를 보면서 이해를 해봅시다.
HTML
<div class="hello"> <p>php</p> <b>html5</b> <h4>css3</h4> </div>
위의 소스를 보면 hello안에 php html5 css3가 각각 다른 태그로 감싸져있습니다.
그럼 find()를 이용해서 h4클래스를 선택해 보겠습니다.
그리고 나서 hello 안에 있는 h4클래스만 빨간색 외곽선 쳐보겠습니다.
jQuery
var hello = $('.hello'); var h4 = hello.find('h4'); h4.css('border',1px solid red');
결과
php
html5css3
위의 결과를 보면 h4태그인 css3에만 빨간색 외곽선이 처리된것을 볼 수 있습니다. 에버디벨의 css의 영향을 받아서 위치들이 이상한데요. 신경쓰지 말아주세요.
소스
<!doctype html> <html> <head> <meta charset="utf-8" /> <title>COREASUR :: 제이쿼리 강좌</title> <script type="text/javascript" src="https://code.jquery.com/jquery-3.2.0.min.js" ></script> <script type="text/javascript"> $(function(){ var hello = $('.hello'); var h4 = hello.find('h4'); h4.css('border','1px solid red'); }); </script> </head> <body> <div class="hello"> <p>php</p> <b>html5</b> <h4>css3</h4> </div> </body> </html>
그럼 h4태그를 선택자로 쓰거나 하면 될텐데 왜 이렇게 하나라고 생각하실수 있는데요..
실무를 하다보면 아하 이럴때 써야하구나 라는 순간이 옵니다...
그럼 어떤 상황에 쓰면 좋을까요?
만약 똑같은 클래스명으로 된 엘리먼트를 this연산자를 사용하여 하위 엘리먼트의 특정 태그를 선택할 때 find를 사용하면 편리합니다.
예를 들어 다음과 같이
<div class="hello"> <p>php</p> <b>html5</b> </div> <div class="hello"> <p>php</p> <b>html5</b> <h4>css3</h4> </div> <div class="hello"> <p>php</p> <b>html5</b> <h4>css3</h4> </div>
위의 소스에 클릭한 hello 클래스의 b태그의 색을 변경한다고 하면
다음과 같은 코드는 작동하지 않습니다.
$(this + ' b').css('color','skyblue');
이럴때 find를 사용해 b태그를 선택합니다.
$(this).find('b').css('color','skyblue');
그럼 해봅시다.
<!doctype html> <html> <head> <meta charset="utf-8" /> <title>COREASUR :: 제이쿼리 강좌</title> <script type="text/javascript" src="https://code.jquery.com/jquery-3.2.0.min.js" ></script> <script type="text/javascript"> $(function(){ $('.hello').click(function(){ $(this).find('b').css('color','skyblue'); }); }); </script> <style> .hello{border:1px solid skyblue;margin-bottom:20px} </style> </head> <body> <div class="hello"> <p>php</p> <b>html5</b> </div> <div class="hello"> <p>php</p> <b>html5</b> <h4>css3</h4> </div> <div class="hello"> <p>php</p> <b>html5</b> <h4>css3</h4> </div> </body> </html>
위의 코드를 실행하여 박스를 클릭하면 해당 박스의 b태그만 색이 변경됩니다.