Проблема с задержкой jQuery при событии mouseenter

0

Это должно быть просто... не знаю, почему это дает мне неприятности, как это. У меня есть простая функция мыши. Работает отлично. Я бы хотел, чтобы функция запускалась только после зависания в течение 2,5 секунд.

Моя рабочая функция - это...

Рабочий скрипт

$('.profileimage').mouseenter(function(e) {
  $(this).parent().parent().find('.profileInfo').css({'top': (e.pageY + 25),'left': (e.pageX + 25)}).fadeIn('slow');
});

Достаточно просто... все, что он делает, исчезает в элементе div я сейчас скрывал.

Теперь, чтобы добавить задержку, я завернул это в setTimeout(function(), потому что после прочтения некоторых других сообщений здесь это похоже на правильное решение. Так что теперь у меня есть это...

Не работает скрипт

$('.profileimage').mouseenter(function(e) {
  setTimeout(function() {
  $(this).parent().parent().find('.profileInfo').css({'top': (e.pageY + 25),'left': (e.pageX + 25)}).fadeIn('slow');
  }, 2500);
});

По-видимому, я не использую функцию setTimeout правильно, или я предполагаю, что это будет работать.

Рабочая демонстрация: http://jsbin.com/AqiFEQI/1/edit

Сломанная демонстрация: http://jsbin.com/AqiFEQI/2/edit

Если вы попробуете рабочий код, вы увидите, что уродливый div всплывает при наведении курсора на Чарльза. В сломанной выборке ничего не происходит.

Любая помощь будет принята с благодарностью...

Теги:
timeout

1 ответ

3
Лучший ответ

это будет равно окну, когда вызывается таймаут-обратный вызов. Изменить на

$('.profileimage').mouseenter(function(e) {
    var elem = this;
    setTimeout(function() {
       $(elem).parent().....;
    }, 2500);
});

Обновлен JSBin: http://jsbin.com/AqiFEQI/4/edit

  • 0
    Да ... это именно так. Благодарю.
  • 0
    К сожалению ... это не первый раз , когда я бежать в к ситуации , когда this не объект , я думаю , что это ... должно уделять больше внимания.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню