2014-01-09 97 views
0

這是我的代碼。如何延遲(「mouseenter」)2秒後?

在第4行中,我想在鼠標輸入lastItemsLink後2秒後運行this.openList。

我該怎麼做?

lastItemsLink = $(".last-items"), 
openLastItemsList = { 
    init: function() { 
     lastItemsLink.on("mouseenter", this.openList); 
     lastItemsLink.on("mouseleave", this.closeList); 
    }, 
    openList: function() { 
     lastItemsContainer.stop(false, true).slideDown("fast"); 
    }, 
    closeList: function() { 
     lastItemsContainer.stop(false, true).fadeOut("fast"); 
    } 
}; 

回答

2

你可能要做像

lastItemsLink = $(".last-items"), 
openLastItemsList = { 
    init: function() { 
     lastItemsLink.on("mouseenter", this.openList); 
     lastItemsLink.on("mouseleave", this.closeList); 
    }, 
    openList: function() { 
     openLastItemsList.timer = setTimeout(function() { 
      lastItemsContainer.stop(false, true).slideDown("fast"); 
      delete openLastItemsList.timer; 
     }, 2000) 
    }, 
    closeList: function() { 
     if (openLastItemsList.timer) { 
      clearTimeout(openLastItemsList.timer) 
     } else { 
      lastItemsContainer.stop(false, true).fadeOut("fast"); 
     } 
    } 
}; 

演示:Fiddle

+0

謝謝你,爲我工作。 –

1

使用setTimeout

lastItemsLink.on("mouseenter", function() { 
    setTimeout(this.openList, 2000) 
}); 
1

嘗試.delay()函數 click here

this.delay(2000).openList 

可能工作試試看......

+0

由阿倫提到這並沒有工作 –

+0

然後鬥魚使用超時功能.. – Shashank