JQuery toggle 옵션 - jQuery toggle obsyeon

Heidong 2021. 11. 1. 21:28

토글은 요소가 보이면 보이지 않게 안보이면 보이게 만드는 메소드 이다.

같은 기능을 show() 와 hide()를 이용해서 만들 수 있는데

토글을 사용하면 코드가 더 간결해지면서 같은 효과를 낼 수 있다.

(다만 show() hide()는 속도를 조절 할 수 있어서 좋음)

$(function() {
	$(".faq-body h3.question").click(function() {
		$(this).next(".faq-body div.answer").toggle();
	});
});

faq-body 클래스를 받고있는 태그 안에 h3 태그인데 question 클래스를 받고 있는 h3을 클릭하면

다음 태그를 토글 하겠다 (숨겨져 있으면 보이게하고 보여지고 있으면 숨기겠다.)

  jQuery의 .slideToggle()은 객체를 말아올리거나 펼치는 효과를 낸다. .slideToggle()의 형식은 아래와 같다.

.slideToggle( [움직임 시간(duration)] [, 움직이고 나서 실행할 함수(callback)] )
.slideToggle( [움직임 시간(duration)] [, 늦춤 함수(easing)] [, 움직이고 나서 실행할 함수(callback)] )

  움직임 시간은 밀리초(ms) 단위로 넣거나 slow, normal, fast를 쓸 수 있다. 아래는 jQuery로 단추(button)를 딸깍하면 상자(div)가 펼쳐져 있으면 말아올려서 접고, 접혀 있으면 천천히 펼쳐내리는 예제이다.

<html>
<head>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.7.2.min.js"></script>
</head>

<body>
<button id="click_button">딸깍해 보세요</button>
<div style="width: 125px; background-color: rgb(90, 200, 220);" id="button_content">말아올리고 말아내리는 글상자</div>
<script type="text/javascript">
$('#click_button').click(function() {
$('#button_content').slideToggle('slow', function() {
// 객체가 다 펼치지거나 접히고 나면 여기에 든 내용이 실행된다.
});
});
</script>
</body>
</html>

<미리보기>

  단추로 쓸 객체를 button 태그 대신 span이나 div로 바꾸어도 된다. 접거나 펼치는 시간은 slow가 600밀리초, fast는 200밀리초이다.

  • 참고한 곳 : http://api.jquery.com/slideToggle/

* 이 포스팅은 네이버 블로그에서 작성(2013.04.02)한 내용을 옮겨온 것입니다.

오늘은 자바스크립트 라이브러리 중 하나인 jQuery 에서 사용 가능한 이펙트 함수 중 가장 빈번하게 쓰이는 " show / hide / toggle " 에 대해 알아보고자 합니다.

검색해서 들어오셨다면 기본적인 jQuery 사용 방법은 숙지하셨다 생각하고 바로 본론으로 들어갑시다!

show() & hide() Example

$("#tagID").show(); // display 속성을 block 으로 바꾼다.
$("#tagID").hide(); // display 속성을 none 으로 바꾼다. 

보여주거나 감추고 싶은 태그 ID를 넣어주면 됩니다. 간단합니다.

show() / hide() Syntax

더 정확한 문법은 다음과 같습니다.

$(selector).show(speed,callback);
$(selector).hide(speed,callback);

  • selector - 태그 ID 값 또는 선택할 노드들의 셀렉터 구문을 넣어줍니다.
  • speed(optional) - "slow", "fast", 또는 밀리세컨드의 숫자를 넣어주면 보여주거나 감출 속도를 정할 수 있습니다.
  • callback(optional) - 콜백 함수를 설정하면 show()/hide() 함수 완료 후 실행됩니다.

정확한 이해를 위해 예제 코드를 보면 좋겠죠? 여기를 클릭해서 연습합시다.

show() / hide() Complex Example

예전엔 이런식의 코드도 많이 사용했었습니다. 지금도 사용 가능합니다.

function toggle_layer() {
	if($("#layer").css("display") == "none"){
		$("#layer").show();
	}else{
		$("#layer").hide();
	}
}

위와 같은 함수를 만들땐 여러가지 복합적으로 처리를 할 때 가끔 사용하면 좋겠죠. 하지만 단순한 on/off 기능이 필요하다면 toggle() 함수를 써봅시다.

toggle() Example

$("#tagID").toggle(); // show -> hide , hide -> show

toggle()을 사용하게 되면 이전 상태에 따라 현재 상태를 반대로 바꿔줍니다.

toggle() Syntax

$(selector).toggle(speed,callback);

  • selector - 태그 ID 값 또는 선택할 노드들의 셀렉터 구문을 넣어줍니다.
  • speed(optional) - "slow", "fast", 또는 밀리세컨드의 숫자를 넣어주면 보여주거나 감출 속도를 정할 수 있습니다.
  • callback(optional) - 콜백 함수를 설정하면 toggle() 함수 완료 후 실행됩니다.

정확한 이해를 위해 예제 코드를 봅시다. 여기를 클릭해서 연습합시다.

간단하게 show() / hide() / toggle() 에 대해 알아봤습니다. 틀린 부분, 추가 보충해야 할 부분 전부 댓글에 적어주시면 고맙겠습니다!

toggle

원문 링크

JQuery toggle 옵션 - jQuery toggle obsyeon
http://api.jquery.com/toggle/

.toggle( [duration] [, callback] )Returns : jQuery

개요 : 일치하는 요소 표시 또는 숨기기.

  • .toggle( [duration] [, callback] )
  • duration 시간 값
  • callback 콜백 함수
  • .toggle( [duration] [, easing] [, callback] )
  • duration 시간 값
  • easing 토글 시 특수한 효과
  • callback 콜백 함수
  • .toggle( showOrHide )
  • showOrHide 보이거나 숨기기 위한 부울 값

.toggle() 함수는 요소의 보임 속성을 조절하는 아주 간단한 함수입니다.

조건과 일치하는 요소는 효과없이 보이게 되거나 숨겨지게 되는데, CSS 의 display 속성값은 변하지 않습니다. 만일 요소가 보이고 있다면 사라지고, 안보인다면 보이게 됩니다. display 속성은 저장되었다가 필요에 따라 복구됩니다. 만일 요소의 display 값이 inline 였다면, 숨겨지고 보여질 때마다 inline 값이 토글되는 것입니다.

시간값(duration)을 세팅하면, .toggle() 함수는 애니메이션 효과를 가지게 됩니다. .toggle() 함수는 width, height, 그리고 투명도(opacity)가 바뀌는 애니메이션 효과를 지니게 되는 것입니다. 이런 속성값들이 0 에 도달하면, display 스타일 속성은 none 이 되어 페이지 레이아웃에서 완전 제거됩니다.

시간값(Durations) 의 기본 단위는 밀리세컨드(milliseconds) 입니다. 높은 값을 주면 느려지고 반대는 빨라집니다. 'fast''slow' 문자열을 사용할 수 있으며, 각각은 200600 밀리세컨드를 의미합니다.

jQuery 1.4.3 버전에 와서, easing 함수를 사용할 수 있는 문자열을 사용할 수 있게 되었습니다. Easing 함수란 스피드를 조작하여 특별한 효과를 나타나게 하는 함수를 의미합니다. jQuery 가 기본적으로 가지고 있는 easing 표현은 swinglinear 입니다. 더 많은 easing 효과들이 궁금하시면 jQuery UI suite를 방문하세요. 단, easing 함수는 플러그인 이므로 관련된 라이브러리를 포함해야 사용이 가능합니다.

콜백 함수를 인자로 사용하면 애니메이션 효과가 완료되면 해당 콜백함수가 실행됩니다. 연속적으로 다른 애니메이션 효과를 추가할 때 유용한 사용법입니다. 단, 콜백 함수는 this 키워드 말고는 인자 전달이 불가합니다. this 키워드는 움직이 있었던 DOM 요소를 의미합니다. 만일 여러개의 요소를 움직인다면, 중요하게 고려해야 할 사항이 있는데 콜백함수는 각 요소의 효과가 끝날때마다 호출 된다는 것입니다.

이미지를 예로 보겠습니다.

<div id="clickme">
  Click here
</div>
<img id="book" src="book.png" alt="" width="100" height="123" />

.toggle() 함수를 사용해 보겠습니다.

$('#clickme').click(function() {
  $('#book').toggle('slow', function() {
    // Animation complete.
  });
});

아래와 같이 동작합니다.

JQuery toggle 옵션 - jQuery toggle obsyeon
JQuery toggle 옵션 - jQuery toggle obsyeon
JQuery toggle 옵션 - jQuery toggle obsyeon
JQuery toggle 옵션 - jQuery toggle obsyeon

두번째 클릭을 하면

JQuery toggle 옵션 - jQuery toggle obsyeon
JQuery toggle 옵션 - jQuery toggle obsyeon
JQuery toggle 옵션 - jQuery toggle obsyeon
JQuery toggle 옵션 - jQuery toggle obsyeon

showOrHide 를 사용하는 방법을 보겠습니다. 이 인자가 true라면 요소가 보이는 상태이고, false라면 보이지 않는 상태입니다. 이것을 이용해서 스크립트를 작성해 보겠습니다.

$('#foo').toggle(showOrHide);

if ( showOrHide == true ) {
  $('#foo').show();
} else if ( showOrHide == false ) {
  $('#foo').hide();
}

.show() 를 포함하여 모든 jQuery effect 들은, 글로벌 세팅인 jQuery.fx.off = true로 조절할 수 있습니다. 더 많은 정보를 원하시면 jQuery.fx.off를 참고하십시오.

예 제  
모든 p 태그를 토글합니다.

<!DOCTYPE html>
<html>
<head>
  <script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
  <button>Toggle</button>
<p>Hello</p>
<p style="display: none">Good Bye</p>
<script>

$("button").click(function () {
$("p").toggle();
});
</script>

</body>
</html>

미리보기

토글이 되면서 마치 바뀌는 것 같습니다. 사실 각각의 p 태그가 토글되고 있는 겁니다.

예 제  
시간값을 설정하여 토글 시 애니메이션 효과를 가지게 합니다.

<!DOCTYPE html>
<html>
<head>
  <style>
p { background:#dad;
font-weight:bold;
font-size:16px; }
</style>
  <script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
  <button>Toggle 'em</button>

<p>Hiya</p>
<p>Such interesting text, eh?</p>
<script>
$("button").click(function () {
$("p").toggle("slow");
});    
</script>

</body>
</html>

미리보기

본문에서 처럼 width, height, opacity 가 바뀝니다.

예 제  
S모든 p 태그를 표시한 다음, 앞뒤로 숨깁니다.

<!DOCTYPE html>
<html>
<head>
  <script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
  <button>Toggle</button>
<p>Hello</p>
<p style="display: none">Good Bye</p>
<script>

var flip = 0;
$("button").click(function () {
$("p").toggle( flip++ % 2 == 0 );
});
</script>

</body>
</html>

미리보기

이 예제는 무슨 의미인지 잘 모르겠네요. ^^;;

토글함수는 jquery의 진리입니다. 아주 유용해요. 잘 사용하세요.

그럼 즐프하세요.

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