일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- TypeScript
- mocking
- type assertion
- react
- jotai
- useLayoutEffect
- Custom Hook
- linux 배포판
- AJIT
- prettier-plugin-tailwindcss
- zustand
- Recoil
- msw
- Headless 컴포넌트
- docker
- 25년 2월
- 클라이언트 상태 관리 라이브러리
- helm-chart
- 좋은 PR
- 타입 단언
- 암묵적 타입 변환
- Microtask Queue
- 프로세스
- 명시적 타입 변환
- CS
- Compound Component
- Sparkplug
- 회고
- JavaScript
- Render Queue
- Today
- Total
구리
TIL_210607_jQuery 기초2 본문
목차
attr()
removeAttr('속성명')
text(), html()
val()
each()
암호확인 기능 구현(keyup 이용)
trigger()
unbind()
n번째 요소 가져오기 예시
is(), children()
not()
end()
append() / empty()
insertAfter() / before()
특정 용어에 대해 번호 붙이기 예시
wrap('특정요소')
clone()
replaceWith()
remove()
fadeIn() / fadeOut()
animate() / stop()
버튼을 이용해 메뉴 열고 닫기 예시
동적으로 원격 페이지 로드 예시
attr()
html 요소의 속성을 다루는 함수로 사용법은 다음과 같다
attr('속성명') : 속성값을 추출(get)
attr('속성명','속성값') : 해당 요소에 속성을 설정 (set)
예시
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>DOM요소의 attribute 읽어오기</title>
<script src="jquery-1.6.2.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function() {
// attr : html 요소의 속성을 다루는 함수
// attr('속성명') : 속성값을 추출(get)
// attr('속성명','속성값') : 해당 요소에 속성을 설정 (set)
// 1.get
alert($('a').attr('href'));
// 2.set 방식
$('#logo').mouseover(function(){
$(this).attr('src','icon_home.gif');
});
});
</script>
</head>
<body>
<a href="http://www.dotnetkorea.com/">닷넷코리아</a>
<img id="logo" src="dotnetkorealogo.gif" alt="닷넷코리아로고" />
<img id="copy" src="icon_copy.gif" />
</body>
</html>
마우스 오버시 큰 이미지 보여주고 마우스 아웃시 감추기 예제(attr 활용 2)
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>마우스 오버시 큰 이미지 보여주기</title>
<script src="jquery-1.6.2.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function() {
// 1. 모든 이미지 태그의 src 속성값을 마우스 오버시 추출
// 2. 해당 이미지파일과 동일한 이름을 가진 image/big 폴더 내의 이미지를
// id="showImage"인 div에 출력
// 3. 마우스 아웃시, id="showImage"인 div를 보이지 않도록 감춤
$('#product img').mouseover(function(){
$('#showImage').show(); //이미지를 출력할 div 보이게 함
var imgSrc = "";
imgSrc = $(this).attr('src'); // 마우스 오버 이벤트를 발생시킨 요소의 속성값 저장
imgSrc = "<img src='../image/bigs/" + imgSrc + "' />";
$('#showImage').html(imgSrc);
});
$('#product img').mouseout(function(){
$('#showImage').hide();
});
});
</script>
</head>
<body>
<div id="product">
<img src="ico_go_up_s.gif" /> <!-- ../image/bigs/~~.gif -->
<img src="ico_go_down_s.gif" />
<div id="showImage" style="border:1px solid red;width:400px;height:400px;">
<!-- <img src="../image/bigs/ico_go_down_s.gif" /> -->
</div>
</div>
</body>
</html>
맵(컬렉션)으로 다중 속성 지정 (attr 함수 활용3)
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>맵(컬렉션)으로 다중 속성 지정</title>
<script src="jquery-1.6.2.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function() {
// attr() : 다양한 속성을 한번에 적용 (맵형태)
$('#com').attr({
src:"ico_go_dowm_s.gif",
alt:"아래화살표",
title:"맵형태 테스트용"
});
});
</script>
</head>
<body>
<img id="com" />
</body>
</html>
위 코드를 보면 attr 함수를 여러 번 사용하여 속성의 값을 지정하는 것이 아닌 MapCollection 형태로 css처럼 여러 속성의 값을 지정할 수 있다
removeAttr('속성명')
해당 속성을 제거하는 함수 (속성값이 아닌 속성!)
예시
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>특정 속성을 지우기</title>
<script src="jquery-1.6.2.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function() {
// removeAttr('속성명') : 해당 속성을 제거하는 함수
$('#btnRemove').click(function(){
$('img:first').removeAttr('src');
});
});
</script>
</head>
<body>
<input type="button" id="btnRemove" value="src삭제" />
<img src="ico_go_up_s.gif" />
<img src="ico_go_down_s.gif" />
</body>
</html>
위 코드 실행시 src 삭제 버튼을 누르면 첫번째 img 태그의 src 속성이 완전히 삭제 되는 것을 볼 수 있다 (속성값이 아닌 속성!!)
text(), html()
텍스트값 가져오기 및 설정하는 함수
두 함수의 차이점
<b>text</b> 태그 입력시
text("<b>first</b>"); => 화면에 <b>first</b>로 출력
html("<b>first</b>"); => 화면에 first로 출력
<b>text</b>인 태그 추출시
$('b').text(); => first
$('b').html(); => <b>first</b>
예시
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>텍스트 값 가져오기 및 설정</title>
<script src="jquery-1.6.2.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function() {
// text() : <b>text</b> 입력시 => <b>text</b> 출력
// html() : <b>text</b> 입력시 => 화면에선 text 출력
// ()안에 값이 없을 경우 해당 요소의 값을 추출(get)
// ()안에 값이 있을 경우 해당 요소의 값을 설정(set)
// 1. <b>의 텍스트들을 한꺼번에 추출
var text = $('b').text();
// alert(text);
$('p:first').text("<b>first</b>"); // <b>first</b>
$('p:last').html("<b>last</b>"); // last
alert($('p:last').text()); // last
alert($('p:last').html()); // <b>last</b>
});
</script>
</head>
<body>
<div>
안녕하세요.
<b>jQuery</b>
<br />
반갑습니다.
<b>JavaScript</b>
<br />
<p>또 만나요.</p>
<p>언제요?</p>
</div>
</body>
</html>
val()
요소의 초기값 설정 및 선택값을 추출하는 함수
val('설정값') => 초기값을 설정값으로 설정
val() => 어떤 태그의 value값을 추출
예시
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>폼 요소의 값 가져오기 및 설정</title>
<script src="jquery-1.6.2.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function() {
// 텍스트 입력값, 라디오 버튼 / 셀렉트 태그 선택값 추출
// 각 요소에 초기값 설정 : val(설정값) : value
// 텍스트 값 설정 : val('설정값')
$('#txtName').val('테스트용초기값');
// 라디오 버튼 계열 갑 설정 : val(['설정값']) -> 다중값
// '설정값' -> 라디오 버튼의 value 값
$('input:radio').val(['여자']);
// select 에 대한 값 설정 : val(['설정값']) -> 다중값
// multiple 값을 가지고 있을 경우 여러개 값 설정 가능 : val(['설정값','설정값'])
// '설정값' -> option 의 value 값
$('#lstFavorites').val(['제이쿼리','프로토타입']);
// 버튼 클릭시 값들을 추출 :val()
$('#btnOK').click(function(){
var msg = "";
msg += $('#txtName').val() + '\n';
msg += $('#input:radio[name=Gender]:checked').val() + '\n';
msg += $('#lstFavorites').val() + '\n';
alert(msg);
});
});
</script>
</head>
<body>
텍스트박스 : <input type="text" id="txtName" /><br />
라디오버튼 :
<input type="radio" id="optGender1" name="Gender" value="남자"/>남
<input type="radio" id="optGender2" name="Gender" value="여자"/>여<br />
드롭다운리스트 :
<select id="lstFavorites" multiple="multiple" size="3"> <!-- size 명시하지 않으면 multiple 적용 X -->
<option value="자바">JavaScript</option>
<option value="제이쿼리">jQuery</option>
<option value="프로토타입">Prototype</option>
</select><br />
<input type="button" value="확인" id="btnOK" />
</body>
</html>
each()
JAVA의 for()문과 비슷한 기능을 하는 함수
each(), attr() 함수를 이용해 요소만큼 id 속성값 부여 후 선택된 태그의 id 속성값 추출 예시
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>요소만큼 반복해서 속성 설정 및 가져오기</title>
<script src="jquery-1.6.2.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function() {
// each() : for() 처럼 반복 함수
// 요소.each(function (index){반복해서 실행할 내용})
// 요소를 찾을 때마다 index가 자동증가
// <p> 태그에 구별할 수 있는 id를 부여 : attr() 활용
$('p').each(function(index) {
$('this').attr({
'id':"para-" + index
});
});
// 부여된 id 값을 이용해 <p>값을 추출 : text()
$('#btn').click(function() {
alert($('#para-0').text());
});
});
</script>
</head>
<body>
<p>C#</p>
<p>ASP.NET</p>
<p>Silverlight</p>
<input type="button" id="btn" value="동적으로 생성된 id로 개체 접근" />
</body>
</html>
자바 스크립트의 for() / jQuery의 each() 비교
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>HTML 요소 가져오기</title>
<script src="jquery-1.6.2.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function() {
// for()
var header = $('h3');
for(var i=0;i<header.length;i++){
alert($(header[i]).html());
}
// each()
$('h3').each(function(index){
alert($(this).html());
});
});
</script>
</head>
<body>
<h3><u>제목1</u></h3>
<h3><b>제목2</b></h3>
</body>
</html>
암호확인 기능 구현(keyup 이용)
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>암호확인 기능 구현하기</title>
<script src="jquery-1.6.2.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function() {
// 1. id="lblError"의 텍스트 clear
$('#txtPassword').keyup(function() {
$('#lblError').text('');
});
// 2. 확인 기능
$('#txtPasswordConfirm').keyup(function() {
if($('#txtPassword').val() != $('#txtPasswordConfirm').val()){
$('#lblError').text('');
$('#lblError').html("<b>암호가 틀립니다</b>");
}else{
$('#lblError').text('');
$('#lblError').html("<b>암호가 맞습니다</b>");
}
});
});
</script>
</head>
<body>
<table style="border: 1px solid skyblue;">
<tr>
<td>암호 :</td>
<td><input type="password" id="txtPassword" size="20" /></td>
</tr>
<tr>
<td>암호확인 :</td>
<td><input type="password" id="txtPasswordConfirm" size="20" /></td>
</tr>
</table>
<div id="lblError">암호를 입력하시오.</div>
</body>
</html>
trigger()
동적으로 다른 이벤트를 호출 ( 이벤트를 다른 요소에 의해 발생시킴)
해당 함수 사용시 어떤 이벤트가 발생할지에 대해서는 미리 명시해야 한다.
다음 예시를 통해 자세한 설명을 한다.
예시
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>동적으로 다른 이벤트 호출</title>
<script src="jquery-1.6.2.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function() {
// 트리거 : 이벤트를 다른 요소에 의해 발생시킴
// 3가지 다 같은 의미
// $('#btn').click(function() {
// alert("버튼 클릭");
// });
/*
$('#btn').bind("click",function() {
alert("버튼 클릭");
});
*/
$('#btn').trigger("click");
// trigger()를 사용시 클릭하지 않아도 alert("버튼 클릭"); 발생
});
</script>
</head>
<body>
<div id="my">
<input type="button" id="btn" value="버튼" class="hover" />
</div>
</body>
</html>
<script>의 첫번째 두번째 예시는 다 같은 의미의 코드로 id=btn인 버튼 클릭시 이벤트 발생하지만 trigger 함수로 인해 클릭하지 않아도 "click"시 발생하는 이벤트가 코드 실행시 바로 발생하게 된다
unbind()
이벤트 처리기 해제해주는 함수
예시
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>이벤트 처리기 해제</title>
<script src="jquery-1.6.2.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function() {
// unbind() 이벤트 헤제
$('#btn').bind("click",function(){
alert("#btn 클릭");
});
// 위와 같은 표현
// $('#btn').click(function(){
// alert("#btn 클릭");
// });
$('#btnUnbind').click(function(){
$('#btn').unbind("click");
});
// id=btnUnbind 인 태그 클릭시 id=btn인 태그 클릭시 이벤트 발생하는 것 해제 시킴!
// 따라서 클릭해도 이벤트 발생 X
});
</script>
</head>
<body>
<div id="my">
<input type="button" id="btn" value="버튼" class="hover" />
<input type="button" id="btnUnbind" value="이벤트 해제" class="hover" />
</div>
</body>
</html>
버튼 클릭시 alert() 함수가 실행되지만 이벤트 해제 버튼 클릭시 버튼 이라는 태그의 이벤트가 해제되면서 (unbind()로 인해) 버튼을 클릭해도
더이상 경고창이 뜨지 않는 것을 볼 수 있다
n번째 요소 가져오기 예시
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>n번째 요소 가져오기</title>
<script src="jquery-1.6.2.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function() {
// 특정요소 중 첫번째 : first
// 마지막 : last
// 몇번째 :
// 1. 선택기 : $('p:eq(2)')
// 2. 함수 : $('p').eq(2)
alert($('p:eq(2)').text());
// alert($('p').eq(2).text());
});
</script>
</head>
<body>
<p>C#</p> <!-- 0번 -->
<p>ASP.NET</p> <!-- 1번 -->
<p><sup>jQuery</sup></p> <!-- 2번 -->
<p>jQuery<sup>1</sup></p> <!-- 3번 -->
<p>jQuery<sub>1</sub></p> <!-- 4번 -->
</body>
</html>
is()
존재 여부에 대하여 true / false 반환
children()
특정 요소의 자식 요소들 가리키는 함수
예시
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>지정된 표현식이 있는지 없는지 검사</title>
<script src="jquery-1.6.2.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function() {
// is() : 존재 여부를 true / false로 반환
// children() : 특정 요소의 자식 요소들
if($('#myForm').children().is("input[type=submit]")){
alert("존재");
}else{
alert("없음");
}
});
</script>
</head>
<body>
<div id="myForm">
<input type="checkbox" />
</div>
</body>
</html>
해당 코드를 보면 id=myForm인 태그의 자식 태그들 중 type=submit인 input 태그가 있는지의 여부에 대해 if문을 사용하였다
checkbox인 input 태그밖에 없기에 결과는 false며 없다는 경고창이 뜨게 된다
not()
~~이 아닌 요소를 가리키는 함수
예시
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>지정된 표현식을 제외한 집합 가져오기</title>
<style type="text/css">
.Yellow {
background-color: Yellow;
}
</style>
<script src="jquery-1.6.2.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function() {
// not() : ~~이 아닌 요소
$('input').not("input[type=radio]").each(function(index) {
$(this).addClass("Yellow");
});
});
</script>
</head>
<body>
<div id="myform">
<input type="text" /> <input type="password" />
<input type="radio" />
</div>
</body>
</html>
<body>태그의 <input> 태그 중 type=radio가 아닌 태그에 대하여 모든 태그에게 스타일 클래스를 적용하는 예제로 <input text>, <input password> d두개의 태그만 css가 적용된 것을 볼 수 있다
end()
방금 실행한 집합 이전으로 되돌리는 함수
예시
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>방금 실행한 집합 이전으로 되돌리기</title>
<style type="text/css">
.Yellow {
background-color: Yellow;
}
</style>
<script src="jquery-1.6.2.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function() {
var html = $('div').find('p:last').find('b').end().html();
// end() : 바로 전단계의 코드로 돌아감
// 2 .find('p:last') : <p><b>jQuery</b></p>
// 3 .find('b') : <b>jQuery</b>
// 4 .end() : <p><b>jQuery</b></p>
});
</script>
</head>
<body>
<div id="myForm">
<p>
<b>JavaScript</b>
</p>
<p>
<b>jQuery</b>
</p>
</div>
</body>
</html>
append()
동적으로 html 태그를 추가하는 함수
empty()
동적으로 html의 특정 요소 내부를 초기화하는 함수
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>DOM 요소 생성 후 원하는 요소에 추가</title>
<style type="text/css">
.Yellow {
background-color: Yellow
}
.Green {
background-color: Green
}
</style>
<script src="jquery-1.6.2.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function() {
// append() : 동적으로 html 태그를 추가하는 함수
// empty() : 동적으로 html의 특정 요소 내부를 초기화하는 함수
$('#lblDisplay').empty();
var strHtml = $("<a href='#'>네이버</a><hr />");
$('#lblDisplay').append(strHtml);
$('#btnCreate').click(function() {
var row = $('#row').val();
var col = $('#col').val();
var strTable = "<table border='1'>";
for(var i=0;i<row;i++){
strTable += "<tr>";
for(var j=0;j<col;j++){
strTable += "<td>" + (i+1) + "행," + (j+1) + "열 </td>";
}
strTable += "</tr>";
}
strTable += "</table>";
$('#lblTable').append(strTable);
});
});
</script>
</head>
<body>
<!--동적으로 태그 추가 -->
<span id="lblDisplay"><b>여기에 태그 추가</b></span>
<!--동적으로 테이블 추가 -->
<input type="text" id="row" />행
<input type="text" id="col" />열
<input type="button" id="btnCreate" value="테이블 동적 생성" />
<div id="lblTable"></div>
</body>
</html>
해당 코드를 살펴보면 id=lblDisplay인 태그의 내부를 (내부이니까 <b>여기에 태그 추가</b>) 초기화 시킨 후 append() 함수를 사용하여
<a href='#'>네이버</a><hr /> 코드를 내부에 추가하였다.
테이블 동적 생성 버튼 클릭시 입력한 행,열의 개수를 바탕으로 append()를 이용해 table 생성 코드를 <div id="lblTable"></div> 내부에 추가시켜 사진과 같은 결과를 얻게 된다
특정 요소.insertAfter("어느 요소 뒤에")
어떠한 요소 뒤에 특정 요소를 추가하고 싶을 때 사용하는 함수
특정 요소 앞에 .before('어떤 요소')
특정 요소 앞에 어떤 요소를 추가하고 싶을 때 사용하는 함수
예시
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>DOM 요소의 앞/뒤에 요소추가</title>
<style type="text/css">
.Chapter {
background-color: Silver;
}
.Content {
height: 100px;
border: 1px solid red;
}
</style>
<script src="jquery-1.6.2.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function() {
// 어떤 요소를 .insertAfter('어느 요소 뒤에')
// 어느 요소 앞에 .before('어떤 요소를')
$('<hr />').insertAfter(".Content");
$('p.Chapter:gt(0)').before("<a href='#'>TOP</a>");
});
</script>
</head>
<body>
<p class="Chapter">1 장</p>
<div class="Content">내용1...</div>
<p class="Chapter">2 장</p>
<div class="Content">내용2...</div>
<p class="Chapter">3 장</p>
<div class="Content">내용3...</div>
</body>
</html>
위 코드를 보면 class=Content인 태그 뒤에 <hr /> 태그를 삽입하고 index가 0보다 크고, class=Chapter인 <p>태그에 대하여 <a>태그를 먼저 삽입한다고 되어 있으므로 내용 div 뒤로는 구분선이 있고 2장부터(p 태그 index 1) 먼저 TOP이라는 <a>태그가 오게 되는 것이다
특정 용어에 대해 번호 붙이기 예시
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>특정 용어에 대해서 번호 붙이기</title>
<style type="text/css">
.Chapter {
background-color: Silver;
}
.Content {
height: 100px;
border: 1px solid red;
}
</style>
<script src="jquery-1.6.2.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function() {
$('.term').not(":odd").css("background-Color", "Yellow")
.end()
.not(":even").css("background-Color", "LightBlue");
$('.term').each(function(idx) {
$(this).append("<sub>" + (idx+1)+"</sub>");
// <sub> : 아래 첨자
// <sup> : 위첨자
});
});
</script>
</head>
<body>
<h3>jQuery is a new kind of JavaScript Library</h3>
<div>
<span class="term">jQuery</span> is a fast and concise
<span class="term">JavaScript</span> Library that simplifies
<span class="term">HTML</span> document traversing, event handling,
animating, and <span class="term">Ajax</span> interactions for rapid
web development. jQuery is designed to change the way that you write
JavaScript.
</div>
</body>
</html>
each(), append() 함수를 이용해 span 태그 중 class=term인 요소들의 텍스트에 <sub> 태그를 이용해 아래 첨자를 사용하였다
위 첨자를 사용하고 싶다면 <sup> 태그를 사용하면 된다
wrap('특정요소')
어떤 요소를 특정 요소로 감싸주는 함수
예시
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>검색된 요소를 특정 태그로 감싸기(wrap)</title>
<script src="jquery-1.6.2.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function() {
$('h3').wrap("<u></u>");
$('<ol type="1" id="community"> </ol>').insertAfter('a:eq(0)');
$('a').each(function(idx) {
$(this).appendTo("#community").wrap('<li></li>');
});
});
</script>
</head>
<body>
<h3>.NET 기술 관련 커뮤니티</h3>
<a href="http://www.asp.net/">ASP.NET</a>
<a href="http://www.silverlight.net/">Silverlight</a>
<a href="http://www.windowsclient.net/">WPF</a>
<a href="http://www.dotnetkorea.com/">.NET All(?)</a>
</body>
</html>
clone('특정요소')
요소를 복제만 하는 함수로 복제만 하기에 어디에 사용할 것인지 따로 명시
(구조는 같은데 이밎만 바꾸거나 할 떄 사용)
예시
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>검색된 요소를 복사하기</title>
<style type="text/css">
#menu {
background-color: Blue;
color: White;
}
#submenu {
background-color: Silver;
}
#content {
height: 100px;
}
</style>
<script src="jquery-1.6.2.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function() {
// 특정 요소.clone() 요소를 복제만 하는 함수
// 같은 구조를 가졌는데 이미지만 바꿔줄 때 등..에서 사용
// 복제만 하기에 어디에 사용할 것인지를 따로 명시
$('#menu').clone().insertAfter('#submenu');
});
</script>
</head>
<body>
<div id="menu">HOME About</div>
<div id="content">상단 메뉴를 아래 하단메뉴에 복사</div>
<div id="submenu">여기는 하단메뉴 들어오는 곳</div>
</body>
</html>
a요소.replaceWith('b요소')
a 요소를 b 요소로 변경해주는 함수
예시
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>검색된 요소를 변경하기</title>
<style type="text/css">
button {
display: block;
margin: 3px;
color: Red;
width: 200px;
}
div {
color: Red;
border: 2px solid blue;
width: 200px;
margin: 3px;
text-align: center;
}
</style>
<script src="jquery-1.6.2.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function() {
// a 요소.replaceWith('b요소') : a요소를 b요소롤 변경
$('button').click(function() {
$(this).replaceWith("<div>" + $(this).text() + "</div>");
})
});
</script>
</head>
<body>
<button>First</button>
<button>Second</button>
<button>Third</button>
</body>
</html>
버튼 클릭시 replaceWith()함수로 인해 button 태그가 div 태그로 변경하게 되면서 모양이 바뀌는 것을 볼 수 있다.
a요소.remove()
a 요소가 삭제(제거)되는 함수로 내부를 초기화해주는 empty()와는 의미가 다르니 헷갈리지 않도록 한다
예시
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>검색된 요소를 완전 제거</title>
<style type="text/css">
div {
background-color: Yellow;
}
</style>
<script src="jquery-1.6.2.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function() {
// 제거할 요소.remove() : 실제 요소가 삭제(제거)
// 요소.empty() : 요소 내부를 초기화
$('#btnEmpty').click(function() {
$('div').empty();
$('div').append("<b>test</b>");
});
$('#btnRemove').click(function() {
$('div').remove();
$('div').append("<b>test</b>");
// div 태그가 제거되었기에 append 적용 불가 !!
});
});
</script>
</head>
<body>
<div>
<p>jQuery</p>
<p>Ajax</p>
</div>
<input type="button" id="btnEmpty" value="위 영역 비우기" />
<input type="button" id="btnRemove" value="위 영역 삭제" />
</body>
</html>
fadeIn() / fadOut()
서서히 나타나거나 사라지는 효과를 주는 함수로 괄호안의 시간을 명시하여 시간동안 효과가 발생하게 된다
예시
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>서서히 보이기 및 숨기기</title>
<style type="text/css">
#my .hover {
cursor: pointer;
background-color: Yellow;
}
div {
background-color: Silver;
height: 100px;
}
</style>
<script src="jquery-1.6.2.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function() {
// fadeIn() : 투명도(alpha) => 서서히 나타나는 효과
// fadeOut() : 투명도(alpha) => 서서히 사라나는 효과
$('#btn').click(function() {
$('#first').fadeIn(3000); // 3초 동안
$('#second').fadeOut(3000);
});
});
</script>
</head>
<body>
<input type="button" id="btn" value="페이드 효과 주기" />
<div id="first" style="display: none; background-color: Yellow;">
첫번째 영역
</div>
<div id="second">또 만나요</div>
</body>
</html>
처음 화면에서 버튼 클릭시 first div가 서서히 생기면서 second div가 서서히 사라지는 것을 볼 수 있다
이를 응용하여 slideUp() 함수를 더하면 웹사이트에서 메뉴 클릭시 보였다 사라지는 효과를 만들어낼 수 있다
fade, slideUp() 효과 예시
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>슬라이드업</title>
<style type="text/css">
#my .hover {
cursor: pointer;
background-color: Yellow;
}
</style>
<script src="jquery-1.6.2.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function() {
$('#btn').click(function() {
$('#first').fadeIn('slow').slideUp('slow');
});
});
</script>
</head>
<body>
<input type="button" id="btn" value="슬라이드 업" />
<div id="first" style="display: none; background-color: Yellow; height: 100px;">
첫번째 영역
</div>
<div id="second">두번째 영역</div>
</body>
</html>
animate()
여러 가지 효과를 동시에 적용할 때 맵 형태로 값 설정하는 함수
문법
적용대상.animate({ }, 시간)
stop()
animate() 함수를 일시 정지
animate() 예시
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>여러가지 효과 동시 처리</title>
<style type="text/css">
#my .hover {
cursor: pointer;
background-color: Yellow;
}
</style>
<script src="jquery-1.6.2.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function() {
// animate() : 여러 가지 효과를 동시에 적용할 때 맵 형태로 값 설정
// 적용대상.animate({ }, 시간)
$('#moreRegion').hide();
$('span.more').click(function() {
$('#moreRegion').animate({height:'200px', width:'show', opacity:'show'}, 'slow');
});
});
</script>
</head>
<body>
<div class="region">
안녕하세요. 여기는 본문입니다. <span class="more">more...</span>
</div>
<div id="moreRegion" style="height: 100px; background-color: Yellow;">
또 만나요
</div>
</body>
</html>
animate(), stop() 예시
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>애니메이션 효과 멈추기</title>
<style type="text/css">
div {
position: absolute;
background-color: #abc;
left: 0px;
top: 50px;
width: 60px;
height: 60px;
margin: 5px;
}
</style>
<script src="jquery-1.6.2.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function() {
// stop() : animate() 함수를 일시 정지
$('#go').click(function() {
$('.block').animate({left:'+=100px', top:'+=100px'}, 2000);
});
$('#stop').click(function() {
$('.block').stop();
});
$('#back').click(function() {
$('.block').animate({left:'-=100px', top:'-=100px'}, 2000);
});
});
</script>
</head>
<body>
<button id="go">Go</button>
<button id="stop">STOP!</button>
<button id="back">Back</button>
<div class="block"></div>
</body>
</html>
버튼을 이용해 메뉴 열고 닫기 예시
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
.menu {
position: absolute;
top: 0px;
left: 0px;
width: 100%;
height: 100%;
background-color: #DDD;
}
.menu>div {
padding: 2%;
}
</style>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script>
// JavaScript 함수 선언
function ShowSubMenu(strId) {
var lySubMenu = $(strId);
if(lySubMenu.first().is(":hidden")){
$(strId).slideDown(3000);
}else{
$(strId).slideUp(3000);
}
}
$(document).ready(function() {
$('.menu_2').hide();
});
</script>
</head>
<body>
<div class="menu">
<div>
메뉴 1
<button onclick="ShowSubMenu('#sub1')"> + </button>
<div class="menu_2" id="sub1">
<div>메뉴 1-1</div>
<div>메뉴 1-2</div>
</div>
</div>
<div>메뉴 2</div>
</div>
</body>
</html>
동적으로 원격 페이지 로드 예시
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>동적으로 원격 페이지 로드</title>
<script src="jquery-1.6.2.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function() {
$('#btn .btnLoad').click(function() {
$('#ctlGrid').load('HtmlSamplePage.html');
window.alert("HtmlSamplePage.html이 로드 되기 전에 먼저 경고창이 열립니다");
});
});
</script>
</head>
<body>
<div id="btn">
<div class="btnLoad">HTML읽어오기 버튼</div>
</div>
<div id="ctlGrid">HtmlSamplePage.html</div>
</body>
</html>
'jQuery' 카테고리의 다른 글
TIL_210607_Ajax 기초 (0) | 2021.06.07 |
---|---|
TIL_210602_jQuery 기초1 (1) | 2021.06.03 |