jQuery Hover mouseenter mouseleave

时间:2013-02-20 15:03:58

标签: javascript jquery html

我正在尝试使用此脚本执行悬停效果:

function itemhover(){
    $(".item").mouseenter(function(){
        $(".mask").fadeIn();
    })
    $(".item").mouseleave(function(){
        $(".mask").fadeOut();
    })
}

问题在于,当我将鼠标悬停在任何项目上时,它会在所有的.mask中淡入淡出,如何指向该函数以仅处理正在悬停的项目?

此外,当我快速地将鼠标放入和移出项目时,淡入淡出效果会变得疯狂,就像它不会停止,然后它会在一段时间后停止,为什么会这样?

感谢

2 个答案:

答案 0 :(得分:1)

听起来您的.mask元素包含在.item元素中。如果是这种情况,那么您可以使用$(this)来“设置”悬停项目的范围(指的是正在悬停的项目。)

function itemhover(){
    $(".item").mouseenter(function(){
        $(this).find(".mask").stop(true, true).fadeIn();
    })
    $(".item").mouseleave(function(){
        $(this).find(".mask").stop(true, true).fadeOut();
    })
}

此外,您可能希望在淡入淡出动画效果之前链接.stop(true, true)以停止任何先前排队的动画,并跳转到上一个排队动画的结尾。

答案 1 :(得分:0)

您可以使用此声明

$(".mask",this).fadeIn();