2010-02-15 3 views
3

Есть ли способ заставить jquery ждать определенного количества времени до того, как событие mouseout будет запущено?JQuery - событие задержки события

Это стрельба слишком рано на данный момент, и я предпочел бы подождать 500 мс, прежде чем он выберет мышь. Пример кода, который я использую ниже.

$('.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); 
} 
3

Вы можете проверить hoverIntent plugin позволяет определить некоторые ВАР, которые помогают с MouseEnter/из взаимодействий

 Смежные вопросы

  • Нет связанных вопросов^_^