🍁Traversing
기본 코드
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
div {
border: 1px solid black;
padding: 5px;
margin: 5px;
}
#me {
border: 5px solid cornflowerblue;
}
.check {
outline: 5px solid coral;
}
</style>
</head>
<body>
<h1>Axis</h1>
<input type="button" value="버튼" id="btn1">
<hr>
<div id="div1">
할아버지
<div>
큰아버지
<div>사촌</div>
</div>
<div>
아버지
<div>큰형</div>
<div>작은형</div>
<div id="me">나
<div>자식
<div>손자</div>
</div>
<div>자식</div>
<div>자식</div>
</div>
<div>동생</div>
<div>막내동생</div>
</div>
<div>
작은아버지
<div>사촌</div>
</div>
</div>
<script src="../asset/js/jquery-1.12.4.js"></script>
<script>
</script>
</body>
</html>
Axis에 대해서는 위 글을 참고한다.
자식에 접근
모든 자식에 접근
- children
$('#me').children().addClass('check');
특정 자식에 접근
- first
- last
- eq
$('#me').children().first().addClass('check'); //첫째
$('#me').children().last().addClass('check'); //막내
$('#me').children().eq(1).addClass('check'); //둘째
eq 함수에 -1을 넣으면 막내를 찾는다.
손자에 접근
모든 손자에 접근
$('#me').children().children().addClass('check');
children으로 두 번 접근하면 손자에 접근할 수 있다.
특정 손자에 접근
<div>
할아버지
<div>
큰아버지
<div>사촌</div>
</div>
<div>
아버지
<div>큰형</div>
<div>작은형</div>
<div id="me">나
<div>자식
<div>손자</div>
<div class="test">손자</div>
<div class="test">손자</div>
</div>
<div>자식</div>
<div>자식</div>
</div>
<div>동생</div>
<div>막내동생</div>
</div>
<div>
작은아버지
<div>사촌</div>
</div>
</div>
//$('#me > div > div.test').addClass('check');
$('#me').children().children('.test').addClass('check');
children의 인자로 class명을 주어서 손자들 중에 class로 test를 가지고 있는 손자만을 검색한다.
조상에 접근
- parent
- parents
- parentsUntil
특정 부모에 접근
$('#me').parent().addClass('check'); //아버지
모든 부모에 접근
$('#me').parents().addClass('check'); //부모들
검색 범위 지정
$('#me').parentsUntil('#div1').addClass('check'); //부모들
parentsUntil은 검색 범위를 지정할 수 있다.
형제에 접근
형에 접근
- prev
- prevAll
- prevUntil
동생에 접근
- next
- nextAll
- nextUntil
형, 동생에 구애받지 않고 접근
- siblings
특정 형제에 접근
$('#me').prev().addClass('check'); //작은형
$('#me').next().addClass('check'); //동생
모든 형제에 접근
$('#me').prevAll().addClass('check'); //모든 형
$('#me').nextAll().addClass('check'); //모든 동생
$('#me').siblings().addClass('check'); //모든 형제
모든 형제에 접근할 때, siblings를 사용해도 동일한 결과를 출력한다.
find()
$('#me').find('.test').addClass('check');
find는 계층을 가리지 않고 요소를 찾는다.
find에 조건으로 인자를 넣으면 해당 조건을 가지고 있는 요소만을 검색할 수 있다.
즉, 나로부터 파생된 하위 모든 태그를 검색할 수 있다.
🍁Traversing의 활용
기본 코드
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
#tbl1 td {
border: 1px solid black;
padding: 10px 20px;
}
</style>
</head>
<body>
<h1>테이블</h1>
<!-- table#tbl1>tr*10>td{item}*5 -->
<table id="tbl1">
<tr>
<td>item</td>
<td>item</td>
<td>item</td>
<td>item</td>
<td>item</td>
</tr>
<tr>
<td>item</td>
<td>item</td>
<td>item</td>
<td>item</td>
<td>item</td>
</tr>
<tr>
<td>item</td>
<td>item</td>
<td>item</td>
<td>item</td>
<td>item</td>
</tr>
<tr>
<td>item</td>
<td>item</td>
<td>item</td>
<td>item</td>
<td>item</td>
</tr>
<tr>
<td>item</td>
<td>item</td>
<td>item</td>
<td>item</td>
<td>item</td>
</tr>
<tr>
<td>item</td>
<td>item</td>
<td>item</td>
<td>item</td>
<td>item</td>
</tr>
<tr>
<td>item</td>
<td>item</td>
<td>item</td>
<td>item</td>
<td>item</td>
</tr>
<tr>
<td>item</td>
<td>item</td>
<td>item</td>
<td>item</td>
<td>item</td>
</tr>
<tr>
<td>item</td>
<td>item</td>
<td>item</td>
<td>item</td>
<td>item</td>
</tr>
<tr>
<td>item</td>
<td>item</td>
<td>item</td>
<td>item</td>
<td>item</td>
</tr>
</table>
<script src="../asset/js/jquery-1.12.4.js"></script>
<script>
</script>
</body>
</html>
td hover 효과
/*
$('#tbl1 td').mouseover(function() {
$(this).css('background-color', 'gold');
});
$('#tbl1 td').mouseout(function() {
$(this).css('background-color', 'transparent');
});
*/
/*
$('#tbl1 td').mouseover(function () {
$(this).css('background-color', 'gold');
}).mouseout(function () {
$(this).css('background-color', 'transparent');
});
*/
$('#tbl1 td').on({
mouseover: function () {
$(this).css('background-color', 'gold');
},
mouseout: function () {
$(this).css('background-color', 'transparent');
}
});
tr hover 효과
$('#tbl1 tr').on({
mouseover: function () {
// $(this).css('background-color', 'gold');
$(event.currentTarget).css('background-color', 'gold');
},
mouseout: function () {
// $(this).css('background-color', 'transparent');
$(event.currentTarget).css('background-color', 'transparent');
}
});