jquery - if(thing.is(:hover)){做某事}

时间:2012-12-27 15:35:54

标签: jquery

我无法让这个工作。在鼠标悬停时,显示div。在mouseleave上,如果仍然显示元素继续显示该元素,否则淡出元素。

$('#list_cont').on('mouseenter', '.show_map', function() {
    $(this).next('.map_cont').fadeIn(800);
}).on('mouseleave', '.show_map', function() {
    var mapcont = $(this).next('.map_cont');
    if (mapcont.is(':hover')) {
        mapcont.show();
    } else {
        $(this).next('.map_cont').delay(600).fadeOut(800);
    }
});​

问题是,元素永远不会离开。示例here。将鼠标悬停在地图上。

1 个答案:

答案 0 :(得分:1)

尝试更像这样的东西。在图标和地图上使用事件处理程序,仅在鼠标离开两个元素时淡出:

$('#list_cont').on('mouseenter', '.show_map', function() {
    $(this).next('.map_cont').stop().fadeIn(800);
}).on('mouseleave', '.show_map', function() {
    if (!$(this).next('.map_cont').is(':hover')) {
        $(this).next('.map_cont').delay(600).stop().fadeOut(800);
    }
});

$('#list_cont').on('mouseenter', '.show_map', function() {
    $(this).stop().show();
}).on('mouseleave', '.map_cont', function() {
    $(this).delay(600).stop().fadeOut(800);
});​

http://jsfiddle.net/JV89J/1/