몇 초 후 div 숨기기


123

jquery에서 몇 초 후에 div를 숨길 수 있는지 궁금합니다. 예를 들어 Gmail의 메시지와 같습니다.

최선을 다했지만 제대로 작동하지 않습니다.


1
숨어있는 것만으로도 충분합니까, 아니면 퇴색하기 위해 필요합니까?
Joel Coehoorn

답변:


247

그러면 1 초 (1000 밀리 초) 후에 div가 숨겨집니다.

setTimeout(function() {
    $('#mydiv').fadeOut('fast');
}, 1000); // <-- time in milliseconds
#mydiv{
    width: 100px;
    height: 100px;
    background: #000;
    color: #fff;
    text-align: center;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="mydiv">myDiv</div>

페이드없이 숨기려면을 사용하십시오 hide().


2
그리고 당신은 미친 Joel Coehoorn 을 한 번에 아주 멋지게 이겼 습니다! :)
cregox 2011 년

3
@James, 확실히 최종 결과에는 차이가 없지만 사용하는 구현 .delay()jQuery.
폴 T. Rawkeen

당신은 대체 할 수 .fadeOut('fast').hide()사업부의 인스턴트 숨기기 위해.
Raptor 2013 년

90

당신은 시도 할 수 있습니다 .delay()

$(".formSentMsg").delay(3200).fadeOut(300);

div를 호출하여 지연 시간을 밀리 초 단위로 설정하고 변경하려는 속성을 설정합니다.이 경우에는 .fadeOut ()을 사용하여 애니메이션을 만들 수 있지만 .hide ()도 사용할 수 있습니다.

http://api.jquery.com/delay/


7
setTimeout을 사용할 필요가없고 코드를 읽기가 더 쉽기 때문입니다.
Marek Bar

12

jquery는 간격 타이머 또는 기타 이벤트 핸들러를 설정하고 나중에 지우거나 재설정 할 필요가없는 시간에 맞춰 div를 숨기는 다양한 방법을 제공합니다. 다음은 몇 가지 예입니다.

순수한 가죽, 1 초 지연

// hide in one second
$('#mydiv').delay(1000).hide(0); 

순수한 가죽, 지연 없음

// hide immediately
$('#mydiv').delay(0).hide(0); 

애니메이션 가죽

// start hide in one second, take 1/2 second for animated hide effect
$('#mydiv').delay(1000).hide(500); 

사라지다

// start fade out in one second, take 300ms to fade
$('#mydiv').delay(1000).fadeOut(300); 

또한 메서드는 큐 이름이나 함수를 두 번째 매개 변수로 사용할 수 있습니다 (메서드에 따라 다름). 위의 모든 호출 및 기타 관련 호출에 대한 문서는 https://api.jquery.com/category/effects/ 에서 찾을 수 있습니다.


10

이를 수행하는 정말 간단한 방법이 있습니다.

문제는 .delay가 애니메이션에만 효과가 있다는 것이므로 .hide ()에 지속 시간을 제공하여 애니메이션처럼 작동하도록 만드는 것입니다.

$("#whatever").delay().hide(1);

짧은 기간을 제공함으로써 일반 .hide 함수와 마찬가지로 즉각적인 것처럼 보입니다.



3

jQuery 타이머를 사용하면 객체에 연결된 타이머와 관련된 이름을 가질 수도 있습니다. 따라서 여러 타이머를 개체에 연결하고 그중 하나를 중지 할 수 있습니다.

$("#myid").oneTime(1000, "mytimer1" function() {
  $("#something").hide();
}).oneTime(2000, "mytimer2" function() {
  $("#somethingelse").show();  
});

$("#myid").stopTime("mytimer2");

eval 함수 (및 관련 함수, Function, setTimeout 및 setInterval)는 JavaScript 컴파일러에 대한 액세스를 제공합니다. 이것은 때때로 필요하지만 대부분의 경우 매우 나쁜 코딩이 있음을 나타냅니다. eval 함수는 JavaScript에서 가장 많이 사용되는 기능입니다.

http://www.jslint.com/lint.html


2

아마도 가장 쉬운 방법은 타이머 플러그인을 사용하는 것입니다. http://plugins.jquery.com/project/timers 그런 다음 다음과 같이 호출 하십시오.

$(this).oneTime(1000, function() {
    $("#something").hide();
  });

1
setTimeout 또는 setInterval을 통해 타이머 플러그인을 사용하는 설득력있는 이유가 있습니까?
지출 자

2
jquery 플러그인을 다운로드하고 첨부하는 것은 단순히 setTimeout을 사용하는 것 보다 쉽지 않다고 말하고 싶습니다 .
Nathan Ridley

1
나는 이것이 반드시 나쁜 것이라고 생각하지는 않지만, 내 코드에서 타이머를 사용하는 경우가 드물기 때문에 그 플러그인을 몇 번 정도 사용하는 것이 비용을 능가하지 않습니다. 타이머를 사용하는 데 필요한 많은 코드를 작성하고 jQuery를 사용하고 있다면이 플러그인이 jQuery 구문을 유지하는 데 매우 유용한 이유를 알 수 있습니다.
Jason Bunting


0
<script>
      $(function() {
      $(".hide-it").hide(7000);
    });              
</script>

<div id="hide-it">myDiv</div>

답변으로 코드 만 게시하지 말고 코드가하는 일과 질문의 문제를 어떻게 해결하는지에 대한 설명을 제공하십시오. 설명이있는 답변은 일반적으로 더 유용하고 품질이 좋으며 찬성 투표를 유도 할 가능성이 더 높습니다.
Mark Rotteveel
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.