2009-06-28 171 views
1

我有以下代碼:停止事件

$('body').mousemove(function() { 
    $('#covering').fadeOut(500); 
    $('.block div div').fadeOut(250) 
    $('.block div div').css('margin-top','160px') 
    $('.block div div').fadeIn(250); 
}); 

基本上什麼,我試圖做的是有有一個「覆蓋」 DIV淡出(如this question)和有幾個塊元素的內部divs淡出,默默移動,並淡入以獲得無縫效果。

但是,運行此操作時,每移動一次鼠標,運行上述所有操作。它提出了一個問題,因爲這不是我想要發生的事情(我希望它發生一次,就是這樣),我猜測它會減慢瀏覽器速度,可能會導致堆疊。

我想我已經閱讀過某個地方如何阻止執行一次它執行一次,但我不記得它,那麼有沒有辦法做到這一點?謝謝。

回答

9
$('body').one('mousemove', function() { 
     $('#covering').fadeOut(500); 
     $('.block div div').fadeOut(250) 
     $('.block div div').css('margin-top','160px') 
     $('.block div div').fadeIn(250); 
}); 

更多信息:http://docs.jquery.com/Events/one

1

嘗試One Event。如前所述,它具有以下功能:

將一個處理程序綁定到一個或多個要針對每個匹配元素執行一次的事件。

我認爲這是你正在尋找的,這裏是一個代碼的例子,你在上面使用了一個事件。

$('body').one("mousemove", function() { 
    $('#covering').fadeOut(500); 
    $('.block div div').fadeOut(250) 
    $('.block div div').css('margin-top','160px') 
    $('.block div div').fadeIn(250); 
});