2009-09-17 121 views
0

以前已經處理過類似的問題,但我相信由於使用bind()函數,我的方法略有不同。總之...JQuery鼠標暫停

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

我想淡出的「的mouseenter」覆蓋,但只有「鼠標離開」後淡出回在2000毫秒。

我還有一個問題:當.overlay div淡出時,我需要能夠點擊下面的內容,即我需要div完全消失或向下移動z-index堆棧。但是,如果我嘗試添加該腳本,腳本認爲鼠標已經離開.overlay div,因此.overlay將淡入。

出於同樣的原因,我無法使用fadeOut()和fadeIn()。

+0

添加一個額外的問題... – strangerpixel 2009-09-18 14:28:57

回答

2

當超時觸發this不會是你所期望的。您可以創建這樣一個封閉:

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

兩個問題:請問「$」在'變量$此= ...'有什麼意義呢?你在這裏得到的原始代碼中提到的「$(this)」是什麼? – idrumgood 2009-09-17 17:49:51

+0

不,var $ this中的'$'只是爲了讓變量看起來更加jQueryish。 '$'字符在javascript中沒有特殊含義。它只是jQuery中「jQuery」的別名。 – Eric 2009-09-17 18:02:22

+0

工作正常,謝謝 - 我現在看到$(this)包裹在setTimeout函數內引用了不同的東西。 – strangerpixel 2009-09-18 13:27:08