2009-03-25 14 views
76

jQueryを使用してフォームがロードされてから5秒後に、Webページの要素を自動的に非表示にすることはできますか?jQuery autohide要素が5秒後に

基本的に、私は5秒後に消えたいと思い

<div id="successMessage">Project saved successfully!</div> 

を持っています。私はjQueryのUIと非表示エフェクトを見てきましたが、私が望むように動作させるのに少し問題があります。

<script type="text/javascript"> 
     $(function() { 
      function runEffect() { 

       var selectedEffect = 'blind'; 

       var options = {}; 

       $("#successMessage").hide(selectedEffect, options, 500); 
      }; 

      $("#successMessage").click(function() { 
       runEffect(); 
       return false; 
      }); 
     }); 
    </script> 

クリック機能を削除して、5秒後にrunEffect()を呼び出すタイムアウトメソッドを追加したいと思います。

mucho gracias!

答えて

91
$(function() { 
    // setTimeout() function will be fired after page is loaded 
    // it will wait for 5 sec. and then will fire 
    // $("#successMessage").hide() function 
    setTimeout(function() { 
     $("#successMessage").hide('blind', {}, 500) 
    }, 5000); 
}); 

:のsetTimeoutの内側にあなたのjQueryの機能を動作させるためには、あなたがあなたがあなたrunEffect機能上のsetTimeoutを使用

function() { ... } 
+1

私のウェブサイトでこのコードを試しました。しかし、それはうまくいかなかった。このjsスクリプト以外に、他に何が必要なのでしょうか?ご意見をお聞かせください!ありがとうございました! – Jornes

+1

@Jornesは、このスクリプトが ''の後にあることを確認してください。このソリューションは、$( 'htmlの')を壊すことに注意して –

1

の内側にそれをラップする必要があります

function runEffect() { 
    setTimeout(function(){ 
     var selectedEffect = 'blind'; 
     var options = {}; 
     $("#successMessage").hide(selectedEffect, options, 500) 
    }, 5000); 
} 
177
$('#selector').delay(5000).fadeOut('slow'); 
+2

。(機能を(クリック){ \t \t // \t \t $( "#セレクター")の外側をクリックします。フェードアウト(); \t}); – max4ever

+0

この簡単なソリューションをありがとう。 – Ron

+0

非常に簡単なソリューションありがとうございます! –

1

私は、あなたも同じようなことをすることができると思う...

setTimeout(function(){ 
    $(".message-class").trigger("click"); 
}, 5000); 

とイベントクリックであなたのアニメーション効果を行う...

$(".message-class").click(function() { 
    //your event-code 
}); 

挨拶、

7

あなたが試すことができます。

setTimeout(function() { 
    $('#successMessage').fadeOut('fast'); 
}, 30000); // <-- time in milliseconds 

をあなたが、その後これを使用した場合divは30秒後に隠れるだろう。私もこれを試してみて、それは私のために働いた。

0

これは、クリックした後にタイムアウトを設定する方法です。

$(".selectorOnWhichEventCapture").on('click', function() { 
    setTimeout(function(){ 
     $(".selector").doWhateverYouWantToDo(); 
    }, 5000); 
}); 

// 5000 = 5秒= 5000(ミリ秒)

0

あなたはそれが消えた後、再びdivのテキストを表示する必要がある場合がありますのでご注意ください。 したがって、ある時点で要素を空にしてから再度表示する必要があります。

あなたは、コードの1行でこれを行うことができます:あなたはjQueryのを使用している場合には、少なくとも要素を自動的に隠すしない、のsetTimeoutを必要としない

$('#element_id').empty().show().html(message).delay(3000).fadeOut(300); 

関連する問題