setTimeoutの使い方
setTimeoutの第一引数に関数を名前で渡す場合は、カッコをつけない関数名だけで渡すようにしてください。
javascript
1// 引数を無名関数にする場合
2setTimeout(function(){
3 $.colorbox.close();
4}, 1000)
5
6// 関数名を引数として渡す場合
7setTimeout($.colorbox.close, 1000);
8
すぐ閉じる原因について
また、5秒待たずにcloseボタンで閉じた場合も、秒読みは続行されていますので、
下記のようなことが起こります。
- 開いて2秒後にCloseボタンで閉じる
- 消した直後、すぐにモーダルを開く
- 1と並行して別のカウント開始
- モーダルを開いてからおよそ3秒後に、1の時点でのカウントが5秒に達するため自動で閉じる
- 直後にモーダルを開くと、2秒後に3の時点でのカウントが5秒に達するため自動で閉じる
上記の挙動が、表示されてすぐに閉じられる原因となっています。
このような事態を回避するためには、開くたびにclearTimeout()
を実行し、以前のカウントを止める必要があります。
javascript
1$(function() {
2 var timerId;
3 $(".inline").colorbox({
4 onComplete: function() {
5 clearTimeout(timerId); // 以前のカウント処理を停止
6 timerId = setTimeout($.colorbox.close, 5000);
7 }
8 });
9});
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/09/17 06:20