2012-05-30 51 views
1

我必須做出類似於當用戶移動鼠標時出現的東西,並在兩秒後隱藏(如flickr slideshow。我使用jQuery .mousemove事件slideDown and slideUp。在調用slides functions時,我還傳遞了一個回調函數,它在2秒後隱藏它。jquery mousemove無法正常工作

問題:在第一次鼠標移動時顯示,然後在2秒後隱藏。但之後,在鼠標移動它在1000年只出現一次。爲什麼?

jQuery代碼

var prevDate = 0; // keep this as a global variable 

$('#slides').mousemove(function(e) { 
    var date = new Date().getTime(); 
    if(date - prevDate > 300){ 
     $('#up').slideDown('normal',function(){ 
      $('#up').delay(2000).slideUp('normal'); 
     }); 
     $('#down').slideDown('normal',function(){ 
      $('#down').delay(2000).slideUp('normal'); 
     }); 
      prevDate = date; 
    } 
}); 

當滑動是與寬度和高度的分度100%和#up and #down是兩個div其中我要顯示和隱藏。你可以看到整個代碼here

回答

1

我總算明白你正在嘗試做的看到fickr鏈接後,您所提供


要顯示頂部和底部面板每當mouse moves並繼續顯示面板鼠標正在移動。然後你想在鼠標停止移動後2秒完全隱藏它們。

現在,這裏是解決方案:

$("document").ready(function(e) { 
    var onmousestop = function() { 
     $('#up').slideUp('normal'); 
     $('#down').slideUp('normal'); 
    };  
    var timer;  
    $('#slides').mousemove(function(e) { 
     $('#up').slideDown('normal'); 
     $('#down').slideDown('normal'); 
     clearTimeout(timer); 
     timer = setTimeout(onmousestop, 2000); 
    }); 
});​ 

也發現http://jsfiddle.net/3rZMM/9/

+0

k,但是這也不能正常工作,或者說我會說完美的flickr幻燈片我修改了鏈接 –

+0

爲了我可以根據時間(日期)使用條件。我想要實現的是mousemove不是鼠標懸停的flickr –

+0

請理解,我想觸發mousemove上的這些div而不是懸停在flickr上的任何東西(請參閱問題中給出的鏈接)以及混亂或超載編輯問題中的js以使用日期 –

0

您可以捕獲懸停事件而不是mousemove嗎?

//divs show up on mouse move 
$('#slides').hover(function(e) { 
    $('#up').slideDown('fast',function(){ 
     $('#up').delay(1000).slideUp('fast'); 
    }); 
    $('#down').slideDown('fast',function(){ 
     $('#down').delay(1000).slideUp('fast'); 
    }); 
    }, function(e){}); 
});​ 
+0

爲什麼解決?這也是爲什麼? –

0

嘗試用.mouseover()代替。看看更新的小提琴 - http://jsfiddle.net/3rZMM/6/

+0

給出了相同的結果?即使這是不正確的。 –

+0

你是什麼意思「不能正常工作」? –

+0

是否因爲你的CSS在100%寬度上有#滑動? –