0

同様の問題は以前に対処されていましたが、 bind() 関数を使用しているため、私のものは少し異なると思います。とにかく...

$('.overlay').bind("mouseenter",function(){
  $(this).fadeTo('slow', 0);
}).bind("mouseleave",function(){                
  setTimeout(function() { 
    $(this).fadeTo('slow', 1);
  }, 2000);
});

「mouseenter」でオーバーレイをフェードアウトしたいのですが、「mouseleave」後 2000ms でフェードバックします。

追加の質問があります。.overlay div がフェードアウトしたときに、その下にあるものをクリックできるようにする必要があります。つまり、div を完全に非表示にするか、z-index スタックを下に移動する必要があります。ただし、これを追加しようとすると、スクリプトはマウスが .overlay div を離れたと見なし、.overlay がフェードインします。

同じ理由で、fadeOut() と fadeIn() は使用できません。

4

1 に答える 1

2

タイムアウトが発生したときは、this期待したものではありません。次のようなクロージャを作成できます。

            $('.overlay').bind("mouseenter",function(){
                    $(this).fadeTo('slow', 0);
                    }).bind("mouseleave",function(){
                    var $this = $(this);                               
                    setTimeout(function() { 
                            $this.fadeTo('slow', 1);
                            }, 2000);
            });
于 2009-09-17T17:46:18.333 に答える