Скрытие DIV, если мышь не закончена, после задержки? - PullRequest
0 голосов
/ 05 мая 2011
tooltip = "#tooltip";

При добавлении маркера на карту я добавляю прослушиватель:

google.maps.event.addListener(marker, 'mouseout', function () {
                        hideWindow(tooltip);
                    });

Что относится к этому:

function hideWindow(div) {
                var t = setTimeout("jQuery(div).hide()", 1000);
        }

Состояния Firebug 'div' не определено.Почему?

Ответы [ 2 ]

4 голосов
/ 05 мая 2011

Вы не должны использовать строки внутри setTimeout, а замыкание.

например:

setTimeout(function(){
  jQuery(div).hide()
}, 1000)
1 голос
/ 05 мая 2011

Это не определено, потому что вы используете строковую версию setTimeout, поэтому ваша переменная div не находится в области видимости. Это не следует использовать, если это вообще возможно.

Попробуйте вместо этого:

function hideWindow(div) {
    var t = setTimeout(function() {
        jQuery(div).hide();
    }, 1000);
}

В качестве альтернативы, если вы хотите использовать анимацию jQuery, вы можете поместить задержку непосредственно в ваш обработчик событий, используя .delay():

google.maps.event.addListener(marker, 'mouseout', function () {
    jQuery(tooltip).delay(1000).hide('fast');
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...