본문 바로가기
프로그래밍/jQuery

jQuery API 정복 - 내용이 빈 태그 찾기 : jQuery(':empty')

by zoo10 2011. 2. 8.

:empty 는 해당 요소의 텍스트가 없을 때 선택되어 집니다. 괜히 표현만 어렵습니다. 백문이 불여일견~

원문 링크 http://api.jquery.com/empty-selector/

empty selector

  • jQuery(':empty')

jQuery.com 에는 이렇게 되어 있습니다. 이 선택자는 :parent 와는 반대입니다. 한가지 중요한 것은 :empty 나 :parent 선택자가 텍스트 노드까지도 자식 요소로 여긴다는 것입니다.

W3C 에 따르면 <P> 태그는 비록 그 요소가 텍스트(text)여도 반드시 하나의 자식 요소를 포함해야 합니다.(참고 : http://www.w3.org/TR/html401/struct/text.html#edef-P). 반면에 어떤 태그들은 자식요소가 없어도 됩니다. input, img, br, hr 과 같은 태그들 말입니다.

이렇게 되어 있는데요. 영어 실력이 딸려서 정확하게 무슨 뜻인지는 모르겠습니다. 그런데 여기서 말하고자 하는 것은 :empty 나 :parent 선택자가 텍스트 노드(text nodes)도 요소(element)로 생각한다는 것이죠. 즉, 태그 안에 텍스트가 들어 있으면 그 요소는 :empty 선택자에 의해서 선택이 제외된다는 뜻인거 같습니다. 맞을까요? ^^;;

예 제  
자식요소가 없는 td 를 찾아서 'Was empty!' 라는 텍스트를 적어 넣습니다.

<!DOCTYPE html>
<html>
<head>
  <style>

  td { text-align:center; }
  </style>
  <script src="http://code.jquery.com/jquery-1.4.4.js"></script>
</head>
<body>
  <table border="1">
    <tr><td>TD #0</td><td></td></tr>
    <tr><td>TD #2</td><td></td></tr>

    <tr><td></td><td>TD#5</td></tr>
  </table>
<script>$("td:empty").text("Was empty!").css('background', 'rgb(255,220,200)');</script>

</body>
</html>

미리보기

여기서 한가지 중요한 것은 <td></td> 와 <td> </td>(공백이 있음) 은 다릅니다. 즉 공백도 text 로 인식하여 자식요소가 있다고 판단하는 것이죠. 엔터키 또한 마찬가지 입니다. 어~ 텍스트 없는데 왜 빈 것으로 인식안해 라고 하심 안됩니다.~~

 

이 선택자의 사용법은 막상 사용할 때 혼란이 좀 올 수 있겠네요. '아우 왜~ 문자가 없는데 이게 선택이 안되지'라고 말이죠. 그럴때는 꼭 공백이나 엔터키가 들어가 있는지 확인해 보시는게 좋겠네요.

그럼 즐프하세요.

※ 본 예제는 http://www.jquery.com 에 있는 내용임을 밝힙니다.