函数重新调用悬停

时间:2014-05-15 11:43:16

标签: jquery html map

创建自定义谷歌地图。

我的成就 - 我需要映射' center'在div悬停时重新排列div宽度和高度后重新排列。

问题:当我悬停并按住div - 地图中心重新安排时。 如何解决这个问题

jsFiddle  我这样累了

代码

function initialize() {
    var mapOptions = {
        zoom: 4,
        center: new google.maps.LatLng(21.14580, 79.08815)
    };
    var map = new google.maps.Map(document.getElementById('mapbox'),
        mapOptions);
    var marker = new google.maps.Marker({
        position: map.getCenter(),
        icon: 'http://toobler.com/staging/design/hapzis/img/icon-map.png',
        map: map
    });
}
google.maps.event.addDomListener(window, 'load', initialize);
 // hover function
$('#mapbox').hover(function () {
    setTimeout(function () {
        initialize()
    }, 1000);
});

3 个答案:

答案 0 :(得分:1)

你需要关闭悬停

工作JSFiddle

 $('#mapbox').hover(function() {
     setTimeout(function() {
         initialize()
     }, 1000);
     $(this).off('hover');                
 });

答案 1 :(得分:1)

尝试off() method

demo

$('#mapbox').hover(function() {
    setTimeout(function() {
        initialize()
    }, 1000);
    $(this).off('hover');                 
});

或者只是将false设置为初始化函数:

$('#mapbox').hover(function(){
    setTimeout(function(){
        initialize();
        initialize = false;
    });
});

demo

答案 2 :(得分:0)

默认情况下,悬停功能使用mouseout鼠标悬停方法,因此可能无法获得预期结果。

因为你只需要在mouseleave之后初始化你的地图

尝试用以下代替您的悬停代码希望这会有所帮助..

$('#mapbox').mouseleave(function() {
    setTimeout(function(){
        initialize()
    },1000);
});

请参阅mouseout vs mouseleave here