如果鼠标没有结束,延迟后隐藏DIV?

时间:2011-05-05 11:11:16

标签: javascript jquery google-maps

tooltip = "#tooltip";

向地图添加标记时,我添加了一个监听器:

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

其中包含:

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

Firebug声明'div'没有定义。 为什么呢?

2 个答案:

答案 0 :(得分:4)

你不应该在setTimeout中使用字符串,而应该使用闭包。

例如:

setTimeout(function(){
  jQuery(div).hide()
}, 1000)

答案 1 :(得分:1)

未定义,因为您使用的是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');
});