2016-04-05 3 views
1

Я хочу перевести значения, если пользователь наводил курсор мыши на элемент мыши в течение 1,5 секунд. Я написал небольшую функцию jQuery, но я не знаю, как я могу проверить, находится ли пользователь над элементом через 1,5 секунды.JS setTimeout получить событие после задержки

$(document).on('mouseover', '.search-translate', function(e) { 
    setTimeout(function() { translate(e, this); }, 1500); 
}); 

function translate(pEvent, pThis) 
{ 
    if(pEvent.currentTarget == ???.currentTarget) 
    { 
     $.ajax(.....); 
    } 
} 

У кого-нибудь есть идеи?

+5

Вы теряете 'this' контекст' setTimeout' ... 'SetTimeout (функция() {переводить (е, это);} .bind (это), 1500),' – Rayon

+1

Отменить тайм-аут в обработчик мыши. – nnnnnn

+0

@nnnnnn Хорошая идея, спасибо человеку! – Phil795

ответ

0

Используйте этот фрагмент кода ....

$(document).on('mouseover', '.search-translate', function(e) { 
 
\t \t \t var obj=this; 
 
\t \t \t setTimeout(function() { translate(e, obj); }, 1500); 
 
\t \t }); 
 

 
\t \t function translate(pEvent, pThis) 
 
\t \t { 
 
\t \t \t alert(pEvent+" : "+pThis); 
 
\t \t }

+0

Отменить таймаут не существует. Я публикую свой рабочий результат ... – Phil795

0

Если я наведите курсор мыши на начало SetTimeout, если я MouseOut событие SetTimeout будет отменен.

var tTimeout; 

function translate(pEl) 
{ 
    ....  
} 

$(document).ready(function() { 
    $(document).on('mouseover', '.search-translate', function(e) { 
     var el = this; 

     tTimeout = setTimeout(function() { translate(el); }, 1500); 
}); 

$(document).on('mouseout', '.search-translate', function() { 
    clearTimeout(tTimeout); 
}); 
Смежные вопросы