본문 바로가기

JavaScript & jQuery

테이블 행 펼치고 접기

 Q. 테이블의 제목(행)들 중 원하는 제목(행)을 클릭하면, 제목 하단으로 해당 제목의 내용이 펼쳐진다.

※펼쳐지기 전                                   ※펼쳐진 후



<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=euc-kr">
<style type="text/css">      
 body {font-size:12px; font-family:돋음}
 td {border-bottom:1px solid #dedede; padding:7px 2px 5px 2px; vertical-align:middle;}
 .title {cursor:pointer;}
 .conts {line-height:1.8; padding:10px;}
 img {margin-top:-2px;}
</style>
<script src="http://cdn.jquerytools.org/1.2.5/jquery.tools.min.js"></script>
<script language="javascript" type="text/javascript">
$(function () {
$('#contents tr').hide(); -- class가 contents인  tr을 모두 감춘다.  펼쳐질 내용을 감춰두기위한 작업
$('#contents').find('.title').parent().show();
-- class가 title인 td가 속한 tr을  보이기위한 작업(parent는 상위를 의미한다.)
$('#contents .title').parent().click(function(){ -- class가 title인 td가 속한 tr을 클릭하면 함수 실행
$('#contents tr').hide();
$('#contents').find('.title').parent().show();
$('#contents').find('.title').css('background-color', '#fff'); -- class가 title인 td가 속한 tr에 배경색을 흰색으로 지정
var tr = $('#contents tr');
var rindex = $(this).parent().children().index(this); -- 클릭한 tr의 인덱스를 찾아 변수에 저장
$(this).children().css('background-color', '#f7f7f7'); -- 클릭한 tr(제목)에만 배경색을 회색으로 지정
for(var i = rindex; i < rindex + 2; i++){ --  클릭한 tr의 다음(1이면 2) tr 인덱스를 찾기위한 작업
$(tr[i]).show(); -- 찾아낸 인덱스 tr을 보이기위한 작업
}
});
});
</script>

<title>Untitled Document</title>
</head>
<body>
 <table id="contents" width="100%" height="100%" border="0" cellspacing="0" cellpadding="0">
 <tr>
       <td class="title"><img src="images/n_01.gif" border="0" align="absmiddle" />
       테이블 행 펼치고 접기_1 클릭
       </td>
 </tr>
 <tr>
       <td class="conts">
       첫번째 행의 내용입니다.
       </td>
 </tr>
 <tr>
       <td class="title"><img src="images/n_02.gif" border="0" align="absmiddle" />
       테이블 행 펼치고 접기_2 클릭
       </td>
 </tr>
 <tr>
       <td class="conts">
       두번째 행의 내용입니다.
       </td>
 </tr>
</table>
 </BODY>
</HTML>