2

まず第一に、英語は私の母国語ではないので、これを説明するのは少し難しいと思います。だから混乱を許してください。

フォームの送信時にトリガーされる小さな通知機能を作成しました。通常の動作は次のとおりです。

  • ユーザーがフォームを送信
  • ノートがフェードイン
  • 2秒遅れ
  • ノートがフェードアウト

メモにカーソルを合わせると、 で拡大されcss-transitionます。論理的には、ユーザーが で折りたたむまでフェードアウトすべきではありませんmouseleave。そして、ここに私の問題があります: fadeOutdivがホバーされている限り、ステートメントが実行されないようにするにはどうすればよいですか?

私は何かを試しました

if ($('#notification').hover()){
    return ;
}

もちろん、最初のステートメントは次のように実行されています。

http://jsfiddle.net/6DsJb/

hoverイベントをリッスンしてから呼び出す別のスクリプトなど、他にもいくつか試しました$('#notification').show() ;

どちらも機能しません。これは単純な推論の誤りであることはわかっていますが、行き詰まっています。

前もって感謝します。

4

2 に答える 2

1

fadeIncallの後、setTimeout次の関数を使用します。

  • 通知が折りたたまれている場合は、非表示にします。
  • それ以外の場合は、.mouseleaveマウス フォーカスを失ったら非表示にします。

すなわち:

$('#notification').fadeIn(500);

setTimeout(function() {
  if (notification_is_collapsed)
    $('#notification').fadeOut(500);
  else
    $('#notification').mouseleave(function() {
      $('#notification').fadeOut(500);
    });
}, 2000);
于 2012-07-10T12:27:59.653 に答える
1

ホバー機能は、マウスが入ったときとマウスが出たときの 2 つのパラメーターを取ります ( http://api.jquery.com/hover/ )

代わりに次のようなことができます:

$('#notification').hover(
function() {}, function() {
    $(this).delay(500).fadeOut(500);
});

ここに更新されたjsfiddleがあります:http://jsfiddle.net/6DsJb/1/

于 2012-07-10T12:30:00.720 に答える