あなたはそれをすることはできませんし、おそらくしたくないでしょう。確かにきれいに見えますが、時間が経過するまで「待機」するだけでそれを行うことができるメカニズムは Javascript にはありません。確かにそれを行うことはできますが、ブラウザのパフォーマンスが大幅に低下するリスクがあり、タイムアウトが数秒より長い場合、ブラウザは JavaScript がスタックしているように見えるという警告をユーザーに表示します。
これを行う正しい方法は、タイムアウトを使用することです。
var el = $('#alert');
el.show()
setTimeout(function() { el.hide() }, 5000);
他のオプションは、jquery を拡張して、遅延させたいアクションの効果を本質的に追加することです。
jQuery.fn.extend({
delayedHide: function(time) {
var self = this;
setTimeout(function() { self.hide(); }, time);
}
});
$('#alert')
.show()
.delayedHide(5000)
;
setTimeout と同様のメソッドで jquery を拡張することもできます。
jQuery.fn.extend({
delayThis: function(fn, time, args) {
var self = this;
setTimeout(function() { jQuery.fn[fn].apply(self, args); }, time);
}
});
$('#alert')
.show()
.delayThis('hide', 5000)
;
または args を使用して呼び出すには、引数を配列で渡します。
$('#alert')
.show()
.delayThis('css', 5000, [ 'display', 'none' ])
;