ログアウトボタンを2回起動させようとしています。最初はシステムから単にログアウトしてから、jQueryを使用してアラートを発生させ、3秒間滞在してからフェードアウトしたいと考えています。それは現在働いていますが、非常に迅速に消えます。私はhref =ビットに "#"を追加しなければなりません、そして、それはすでにユーザーをシステムからログアウトしているアクションを取り消します。私は参照用にSilverstripe SSテンプレートファイルで作業しています。それを壊すことなく "{Link}ログアウト"に "#"を追加する方法はありますか?これは、テストサーバー私はそうのようなアンカーに追加するときにノーフィドル、申し訳ありません...2つのイベントが発生し、フェードアウトが終了しないアンカータグ
アラートが正常に動作しますが、その後ログアウトしないである:
href="# {$Link}logout"
ない現在のHTMLフェード:
<a href="{$Link}logout" id="show-my-alert" class="btn btn-default btn-menu-donate-offcanvas btn-side">
<i class="fa fa-sign-out fa-fw"></i><br><span class="donate-text"> SIGN OUT</a>
<div id="my-alert" class="alert alert-warning hidden" role="alert">
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
<strong>Warning!</strong> You are now logged out of the system.
jQueryの
<script>
$("#show-my-alert, .close").click(function() {
$("#my-alert").toggleClass("hidden").fadeIn(3000);
$("#my-alert").fadeOut(3000);
});
</script>
AS OF NOW使用中のFINAL SCRIPT:
$(function() {
$("#show-my-alert, .close").click(function(e) {
var isClosing = $("#my-alert").data("isClosing");
if (isClosing === undefined || isClosing != true) {
$("#my-alert").toggleClass("hidden").fadeOut(3000, function() {
$("#my-alert").data("isClosing", true);
});
e.preventDefault(); // prevent logout during fading
} else {
// this time logout
}
});
});
あなたのコードは正常に動作していますが、 '.fadeOut(3000); 3秒より早く起きています。その時間を「非常に速く」という言葉よりもよく見積もることができますか?目の瞬きやそれ以上のことはありますか?フェードアウト時間を測定する方法はありますか?それは問題の手がかりを与えることができます。 – Sparky256
これは{$ Link}ログアウトの前に#がある場合にのみ動作し、そうでない場合は消えません。 #がなければ、それは消えた前の10分の1秒のメッセージを表示します。それは実際にどちらかの方法でログアウトします... –
私はこれをテストする方法はありませんが、.fadeInと.fadeOutは対称性を持つべきではありませんか? .toggleClass( "visible")になります。fadeOut(3000); – Sparky256