2012-04-23 28 views
1

與後續代碼:鼠標離開,只有當了mouseenter結束

$('someelement').hover(
    function() { 
     console.log('mouseenter begin'); 
     setTimeout(function() { 
      console.log('mouseenter ends'); 
     }, 2000); 
    }, 
    function() { 
     console.log('mouseleave begin'); 
     setTimeout(function() { 
      console.log('mouseleave ends'); 
     }, 2000); 
    } 
) 

如果我進入,在某些時候離開股利(或一個時間少於2秒)我的控制檯中看到:

mouseenter begin 
mouseleave begin 
mouseenter ends 
mouseleave ends 

我只想在mouseenter結束時執行mouseleave,但不知道如何。

mouseenter begin 
mouseenter ends 
mouseleave begin 
mouseleave ends 

回答

2

您可以創建一個隊列...

http://jsfiddle.net/FHPGS/

var queue = [] 

$('someelement').hover(
    function() { 
     queue.push('mouseenter begin'); 
     setTimeout(function() { 
      var item = queue.shift(); 
      if (item) 
       console.log(item) 
      console.log('mouseenter ends'); 
     }, 2000); 
    }, 
    function() { 
     queue.push('mouseleave begin'); 
     setTimeout(function() { 
      var item = queue.shift(); 
      if (item) 
       console.log(item) 
      console.log('mouseleave ends'); 
     }, 2000); 
    } 
) 
+0

你能解釋一下什麼是必要的代碼,什麼是演示代碼?我不知道如何開始我的代碼。 – 2012-04-23 01:42:45

+0

[This one](http://stackoverflow.com/questions/10282350/best-attributes-order-in-html-for-dom-queries)是給你的。它需要**主人:) :) – gdoron 2012-04-23 14:39:11

+0

@gdoron:我無法改進Pointy的評論,這通常是這種情況。 :) – 2012-04-23 15:03:56

相關問題