2010-02-15 278 views
3

有沒有辦法讓jquery在mouseout事件觸發之前等待一段時間?Jquery - 延遲鼠標事件

它現在發射得太早了,我更願意等待500ms後再評估鼠標。下面我使用的代碼示例。

$('.under-construction',this).bind({ 
    mousemove: function(e) { 
     setToolTipPosition(this,e); 
     css({'cursor' : 'crosshair' }); 
    }, 
    mouseover: function() { 
     $c('show!'); 
     showUnderConstruction(); 
    }, 
    mouseout: function() { 
     $c('hide!'); 
     hideUnderConstruction(); 
    }, 
    click: function() { 
     return false; 
    } 
}); 

是否有jQuery的方式來做到這一點,或者我將不得不自己做?

+1

showUnderConstruction()延遲(500)。 hideUnderConstruction()。delay(500); – ant

回答

8

mouseout內部的邏輯拆分爲另一個函數。在mouseout甚至用setTimeout("myMouseOut", 500)調用此函數。如果用戶移動到新元素中,您可以將mouseover事件與clearTimeout()組合起來以重置計時器。

5

你總是可以將你的邏輯包裝在setTimeout()函數中。

mouseout: function() { 
    setTimeout(function(){ 
    $c('hide!'); 
    hideUnderConstruction(); 
    }, 500); 
}