【问题标题】:jQuery - Hover Off Being Triggered on ChildjQuery - 悬停在孩子身上被触发
【发布时间】:2014-08-26 21:28:29
【问题描述】:

我有一个 640x200 的 div,里面有一个隐藏的 200x100 的 div。我的目标是在 640x200 div 悬停时淡入隐藏的 div,然后在退出该 div 时退出。一切正常,但是当我将鼠标悬停在子 div 上时,它会触发下面的悬停功能。

更新我知道当我将鼠标悬停在隐藏的 div 内的元素上时会触发悬停。

我正在使用此代码:

jQuery("#pstsldcon").hover(function() {
  jQuery("#slidenav").animate({
        opacity: +1
    }, 300)

}, function() {
  jQuery("#slidenav").animate({
        opacity: 0
    }, 300)
});

【问题讨论】:

标签: jquery


【解决方案1】:
jQuery(function($) {
    $("#pstsldcon").on('mouseenter mouseleave', function(e) {
        if ( e.target === this ) {
            $("#slidenav").animate({ 
                opacity: (e.type === 'mouseenter' ? 1 : 0) 
            }, 300);
        }
    });
});

【讨论】:

    【解决方案2】:

    您还需要将hover 侦听器附加到隐藏的<div>,并捕获传递给它的Event。这样,您可以防止它冒泡到父 <div>,从而不会触发悬停。

    你会想要使用类似的东西:

    function(e) {
        e.stopPropagation();
    }
    

    关于隐藏<div>

    【讨论】:

    • jQuery("#slidenav").hover(function(e) { e.stopPropagation(); } 不起作用。:(
    • 嗯,也许e.preventDefault() 也是出于某种原因。但这实际上不应该做任何不同的事情。您也可以使用孩子的hover 来保持显示。
    • 实际上刚刚更新了附加信息:我知道当我将鼠标悬停在隐藏 div 内的元素上时,会触发悬停。这有什么改变吗?
    • 我猜你可以将相同的stopPropagation() 附加到隐藏的<div> 中的所有元素,可能使用> * 选择器。
    猜你喜欢
    • 2011-02-16
    • 1970-01-01
    • 1970-01-01
    • 2022-12-26
    • 2021-01-22
    • 1970-01-01
    • 2012-06-19
    • 2014-11-15
    • 1970-01-01
    相关资源
    最近更新 更多