본문 바로가기

수업내용

[Day43][Jquery] transition / fadeIn / fadeOut / slideUp / slideDown / toggleClass / length / siblings / parent / children / find

Ⅰ. transition

 

-- transition : 속성을 서서히 변화시키는 속성. hover와 주로 쓰인다.

--  IE버전 10 이상부터 사용이 가능하다.

 

-- Folder(chap06)에 Html File(03accordion) 생성

 

chap06 03accordion.html head

<style type="text/css">

div#container {
	width: 80%;
	margin: 0 auto;
	padding: 20px;
}

button.accordion {
	background-color: #eee;
	color: #444;
	cursor: pointer;
	padding: 18px;
	width: 50%;
	border: none;
	text-align: left;
	outline: none;
	font-size: 15px;
	transition: 3s;            
}

button.accordion:hover {
	background-color: #aaa;
	width: 100%;
}

div.panel {
	padding: 0 18px;
	background-color: white;
	overflow: hidden;
}
</style>

<script type="text/javascript" src="/JqueryStudy/js/jquery-3.3.1.min.js"></script> 
<script type="text/javascript">
  $(document).ready(function() {

	  $("div.panel").css('display','none');

	  $("button.accordion").click(function(){
      
		  var $target = $(event.target).next();
       
		  var targetDisplayProperty = $target.css('display');

	  	  if(targetDisplayProperty == 'none') { 
	  		 $target.css({'display':''});
	      }
	  	  else { 
	  		 $target.css({'display':'none'});
	      }
	  });	  

  });
</script>

 

chap06 03accordion.html body

<div id="container">
    
<button class="accordion">Java</button>
<div class="panel">
    <p>자바는 자바로 기술된 프로그램 개발 및 실행을 할 수 있는 소프트웨어 모임의 총칭이다. 자바 프로그램은 운영체제나 하드웨어에 의존하지 않는 바이트 코드인 추상적인 코드로 구현된다.</p>
</div>
    
<button class="accordion">Oracle DataBase</button>
<div class="panel">
    <p>오라클 데이터베이스는 미국 오라클사의 관계형 데이터베이스 관리 시스템의 이름이다. 현재 유닉스 환경에서 가장 널리 사용되는 RDBMS이다. 검색이나 업데이트용 언어로는 국제표준화기구의 표준 구조화 조회 언어와 PL/SQL을 지원한다.</p>
</div>
    
<button class="accordion">HTML</button>
<div class="panel">
    <p>HTML은 하이퍼텍스트 마크업 언어(HyperText Markup Language)라는 의미의 웹 페이지를 위한 마크업 언어다.</p>
</div>

<button class="accordion">CSS</button>
<div class="panel">
    <p>CSS는 Casting Style Sheets의 약자로 html 요소들이 각종 디자인, 레이아웃 등 사용자에게 어떻게 보여지는지 정의하는 스타일 시트 언어입니다.</p>
</div>

<button class="accordion">JavaScript</button>
<div class="panel">
    <p>자바스크립트는 1995년에 넷스케이프(Netscape)의 브렌던 아이크(Brendan Eich)에 의해 만들어졌습니다.</p>
</div>
    
<button class="accordion">jQuery</button>
<div class="panel">
    <p>jQuery는 HTML의 클라이언트 사이드 조작을 단순화 하도록 설계된 크로스 플랫폼의 자바스크립트 라이브러리다. 존 레식이 2006년 뉴욕 시 바캠프에서 공식적으로 소개하였다. jQuery는 오늘날 가장 인기있는 자바스크립트 라이브러리 중 하나이다.</p>
</div>
    
</div>

 

-- 선택자.next() : 이벤트가 발생되어진 곳의 바로 다음 태그(요소)를 선택자로 잡는 것
-- 선택자.prev() : 이벤트가 발생되어진 곳의 바로 이전 태그(요소)를 선택자로 잡는 것

 


 

chap06 04accordion.html head

<style type="text/css">

div#container {
	width: 80%;
	margin: 0 auto;
	padding: 20px;
}

button.accordion {
	background-color: #eee;
	color: #444;
	cursor: pointer;
	padding: 18px;
	width: 50%;
	border: none;
	text-align: left;
	outline: none;
	font-size: 15px;
	transition: 3s;      
}

button.accordion:hover {
	background-color: #aaa;
	width: 100%;
}

div.panel {
	padding: 0 18px;
	background-color: white;
	overflow: hidden;
}
</style>

<script type="text/javascript" src="/JqueryStudy/js/jquery-3.3.1.min.js"></script> 
<script type="text/javascript">
  $(document).ready(function() {

	  $("div.panel").css('display','none');

	  $("button.accordion").click(function(){
		  var $target = $(event.target).next(); // div.panel 을 가리키는 것임.
        		  
		  var targetDisplayProperty = $target.css('display');

	  	  if(targetDisplayProperty == 'none') { 
	  	
	  		 $(".panel").css('display','none');
	  		 
	  		 $target.css({'display':''});
	      }
	  	  else { 
	  		 $target.css({'display':'none'});
	      }
	  });	  
  });
</script>

 

chap06 04accordion.html body

<div id="container">
    
	<button class="accordion">Java</button>
	<div class="panel">
    	<p>자바는 자바로 기술된 프로그램 개발 및 실행을 할 수 있는 소프트웨어 모임의 총칭이다. 자바 프로그램은 운영체제나 하드웨어에 의존하지 않는 바이트 코드인 추상적인 코드로 구현된다.</p>
    </div>
    
    <button class="accordion">Oracle DataBase</button>
	<div class="panel">
    	<p>오라클 데이터베이스는 미국 오라클사의 관계형 데이터베이스 관리 시스템의 이름이다. 현재 유닉스 환경에서 가장 널리 사용되는 RDBMS이다. 검색이나 업데이트용 언어로는 국제표준화기구의 표준 구조화 조회 언어와 PL/SQL을 지원한다.</p>
    </div>
    
    <button class="accordion">HTML</button>
	<div class="panel">
    	<p>HTML은 하이퍼텍스트 마크업 언어(HyperText Markup Language)라는 의미의 웹 페이지를 위한 마크업 언어다.</p>
    </div>

    <button class="accordion">CSS</button>
    <div class="panel">
    	<p>CSS는 Casting Style Sheets의 약자로 html 요소들이 각종 디자인, 레이아웃 등 사용자에게 어떻게 보여지는지 정의하는 스타일 시트 언어입니다.</p>
    </div>

    <button class="accordion">JavaScript</button>
    <div class="panel">
    	<p>자바스크립트는 1995년에 넷스케이프(Netscape)의 브렌던 아이크(Brendan Eich)에 의해 만들어졌습니다.</p>
    </div>
    
    <button class="accordion">jQuery</button>
    <div class="panel">
    	<p>jQuery는 HTML의 클라이언트 사이드 조작을 단순화 하도록 설계된 크로스 플랫폼의 자바스크립트 라이브러리다. 존 레식이 2006년 뉴욕 시 바캠프에서 공식적으로 소개하였다. jQuery는 오늘날 가장 인기있는 자바스크립트 라이브러리 중 하나이다.</p>
    </div>
    
    </div>

 


Ⅱ. fadeIn / fadeOut

 

chap12 fadeInFadeOut

$(document).on("click", "li.moreProphile", 
function(){
    var $target = $(event.target);
      for(var i=0; i<personArr.length; i++) {
        if( $target.is(".no"+i+"") ) {
        $(".moreno"+i+"").fadeIn(3000);
        break;
      }
    }
});

 

-- 선택자.fadeIn(3000); : 선택자에 해당되는 내용물을 숫자(단위는 밀리초) 밀리초 동안 천천히 나타내라는 말이다.
-- 3000 은 3초

   → 3000 대신에 'slow'   를 쓰면  600 과 같다. 0.6초 이다.

   → 3000 대신에 'normal' 를 쓰면  400 과 같다. 0.4초 이다.

   → 3000 대신에 'fast'   를 쓰면  200 과 같다. 0.2초 이다.

 

chap12 fadeInFadeOut

$(document).on("click", "li.hideProphile", 
function(){
var $target = $(event.target);
    for(var i=0; i<personArr.length; i++) {
      if( $target.is(".hideno"+i+"") ) {
      $(".moreno"+i+"").fadeOut(3000);
      break;
    }
  }
});

 

-- 선택자.fadeOut(3000); : 선택자에 해당되는 내용물을 숫자(단위는 밀리초) 밀리초 동안 천천히 사라져라는 말이다.

 


Ⅲ. slideUp / slideDown

 

chap12 slideUpslideDown

$(document).on("click", "li.moreProphile", 
function(){
var $target = $(event.target);
  for(var i=0; i<personArr.length; i++) {
    if( $target.is(".no"+i+"") ) {
    $(".moreno"+i+"").slideDown(3000);
    break;
    }
  }
});

 

-- 선택자.slideDown(3000); : 선택자에 해당되는 내용물을 숫자(단위는 밀리초) 밀리초 동안 아래로 나타내라는 말이다.

 

chap12 slideUpslideDown

$(document).on("click", "li.hideProphile", 
function(){
var $target = $(event.target);
  for(var i=0; i<personArr.length; i++) {
    if( $target.is(".hideno"+i+"") ) {
      $(".moreno"+i+"").slideUp(3000);
      break;
    }
  }
});

 

-- 선택자.slideUp(3000); : 선택자에 해당되는 내용물을 숫자(단위는 밀리초) 밀리초 동안 위로 사라져라는 말이다.

 


-- Folder(chap10)와 Html File(toggleClassCheckBoxParentSiblingsPrevNext) 생성

 

Ⅳ. toggleClass

 

chap10 toggleClassCheckBoxParentSiblingsPrevNext

$("#firstDiv .buttons>label").click(function(){
	$(this).toggleClass("changeCSSname");
});

 

 

-- 선택자.toggleClass("클래스명1"); : 선택자에 "클래스명1" 이 이미 적용되어 있으면 선택자에 "클래스명1" 을 제거하고, 만약에 선택자에 "클래스명1" 이 적용되어 있지 않으면 선택자에 "클래스명1" 을 추가해주는 것.


체크 전체선택 / 전체해제

 

chap10 toggleClassCheckBoxParentSiblingsPrevNext

$("input:checkbox[id=checkall]").click(function(){
	var bool = $(this).prop("checked");
	$("input:checkbox[name=person]").prop("checked", bool);
});

 


체크 전체선택 / 전체해제 중 하나를 다시 선택했을 때 전체선택 / 전체해제도 같이 바뀌어야 한다.

 

chap10 toggleClassCheckBoxParentSiblingsPrevNext

$("input:checkbox[name=person]").click(function(){

  $("input:checkbox[name=person]").each(function(){
  	var bool = $(this).prop("checked");
    if(!bool) {
      $("input:checkbox[id=checkall]").prop("checked", false);
      return false;
    }
  });
});

 

문제 ▷▷ 전체선택이 풀렸을 때 다시 하나씩 다 체크하면 전체선택에 체크가 되어야 한다.

 

chap10 toggleClassCheckBoxParentSiblingsPrevNext

$("input:checkbox[name=person]").click(function(){
	var flag = false;		
	$("input:checkbox[name=person]").each(function(){
		var bool = $(this).prop("checked");
		if(!bool) {
			$("input:checkbox[id=checkall]").prop("checked", false);
			flag = true;
			return false;
		}
	});		
	if (!flag) {
		$("input:checkbox[id=checkall]").prop("checked", true);
	}			
});

 


체크박스 여러 개 중 라디오처럼 단일 선택

 

chap10 toggleClassCheckBoxParentSiblingsPrevNext

$("input:checkbox[name=person2]").click(function(){
	$("input:checkbox[name=person2]").prop("checked", false);
	$(this).prop("checked", true);
});

 


Ⅴ. length

 

length : checkbox(또는 radio)의 개수(길이)

 

chap10 toggleClassCheckBoxParentSiblingsPrevNext

$("div#checkboxCnt").css("display","none");
		
$("button#btnOK").click(function(){
	$("div#checkboxCnt").css("display","");
			
	// == 체크박스의 개수 == //
	var length = $("input:checkbox[name=person]").length;
	$("span#cnt").text(length);
			
	// == 체크박스의 체크 유무 == //
	var checkYNmsg = "체크가 된 것이 하나도 없습니다."
	if($("input:checkbox[name=person]").is(":checked")){
		checkYNmsg = "적어도 1개 이상 체크되었습니다.";
	}
	$("span#checkyn").text(checkYNmsg);
		
	// == 체크박스의 체크된 개수(for문 이용) == //
	var checkCnt = 0;
	for(var i=0; i<length; i++){
		if($("input:checkbox[id=person"+i+"]").is(":checked")){
			checkCnt++;
		}
	}
	$("span#checkCnt").text(checkCnt);
			
	// == 체크박스의 체크된 개수(checked 속성 이용) == //
	checkCnt = $("input:checkbox[name=person]:checked").length;
	$("span#checkCnt2").text(checkCnt);
			
	// == 체크박스에서 체크된 value값(for문이용) == //
	var checkedVal = "";
	for(var i=0; i<length; i++){
		if($("input:checkbox[id=person"+i+"]").is(":checked")){
			checkedVal += $("input:checkbox[id=person"+i+"]").val()+",";
		}
	}
	$("span#checkValue").text(checkedVal.substring(0, checkedVal.length-1));
			
			
	// == 체크박스에서 체크된 value값(checked 속성 이용) == //
	var checkedVal2 = $("input:checkbox[name=person]:checked").val();
			
	$("#checkValue2").text(checkedVal2);
			
	var checkValArr = new Array();
			
	for(var i=0; i<length; i++){
		if(($("input:checkbox[id=person"+i+"]").is(":checked"))) {
			checkValArr.push($("input:checkbox[id=person"+i+"]").val());
		}
	}
				
	var html = "<ul>";
			
	if(checkValArr.length > 0) {
		for(var i=0; i<checkValArr.length; i++){
			html += "<li>"+checkValArr[i]+"</li>";
		}
	}
	else {
		html += "<li>체크박스에 선택된 데이터가 없습니다.</li>";
	}
			
	html += "</ul>";
			
	$("#checkValue3").html(html);	
});

 

 


Ⅵ. siblings / parent

 

-- 선택자.siblings() : 선택자의 형제요소(형제태그) 중 선택자(자기자신)를 제외한 나머지 모든 형제요소(형제태그)를 가리키는 것이다.

-- 선택자.parent() : 선택자의 부모요소(부모태그)를 가리키는 것이다.
-- 선택자.parent().parent : 선택자의 부모요소의 부모요소(부모태그의 부모태그)를 가리키는 것이다.

 

chap10 toggleClassCheckBoxParentSiblingsPrevNext

$("input:checkbox[name=person2]").click(function(){
	$(this).parent().siblings().css('opacity','0.5');
	$(this).parent().css('opacity','1.0');
});

 

 


문제 ▷▷ 체크박스를 클릭하면 이름(ex. 한석규)는 파란색, 입니다는 초록색으로 바뀌도록 하세요.

 

chap10 toggleClassCheckBoxParentSiblingsPrevNext

.blueColor {color: blue;}
.greenColor {color: green;}



$("input:checkbox[name=person2]").click(function(){
	$("span.buttons>label").removeClass("blueColor greenColor");
			
	$(this).prev().addClass("blueColor");
	$(this).next().addClass("greenColor");
});

 

 


Ⅶ. children

chap10 childrenFind head

<style type="text/css">

	#container {
		width: 80%;
		margin: 0 auto;
		border: solid 2px gray;
		padding: 10px;	
	}
</style>

<script type="text/javascript" src="/JqueryStudy/js/jquery-3.3.1.min.js"></script>
<script type="text/javascript">
	$(function(){
		$("div#container").children().css({'border':'solid 1px red','margin':'20px'});
		
		$("div#container2").find(".child").css({'border':'solid 1px blue','margin':'20px'});
	});
</script>

 

chap10 childrenFind body

<h1>children()</h1>
	<div id="container">
		<h2>h2</h2>
		<div id="mydiv">div 태그
			<ul id="ul1">ul 태그
				<li>li태그 야구</li>
				<li>li태그 축구</li>
				<li>li태그 농구</li>
			</ul>
			
			<ul id="ul2">ul 태그2
				<li>li태그 콜라</li>
				<li>li태그 커피</li>
				<li>li태그 사이다</li>
			</ul>
		</div>
	</div>
	
	<h1>children()</h1>
	<div id="container2">
		<h2 class="child">h2</h2>
		<div class="child">div 태그
			<ul class="child">ul 태그
				<li class="child">li태그 야구</li>
				<li class="child">li태그 축구</li>
				<li class="child">li태그 농구</li>
			</ul>
			
			<ul class="child">ul 태그2
				<li class="child">li태그 콜라</li>
				<li class="child">li태그 커피</li>
				<li class="child">li태그 사이다</li>
			</ul>
		</div>
	</div>

 

 

 

-- 선택자.children() : 선택자의 자식(손자는 아님)태그(자식요소)만을 가리키는 것이다.

-- 선택자1.find(선택자2) : 선택자1 안에 있는 선택자2를 가리키는 것이다.