jQuery在简单动画上的不稳定触发

时间:2010-10-15 21:20:30

标签: jquery

您好 我的图像大约150px宽,300px深。当我滚过它时,我想在顶部弹出一个小图像。当我滚动较大的图像时,我希望较小的图像消失。

这一切都有效,除非你将鼠标悬停在新图像弹出的触发图像上,那么当你移动它时,它似乎会进入某种循环或行为不规律。我试过悬停和鼠标悬停/外出。我预计它会在移动鼠标时触发rolloff / rollon事件。

您可以看到www.ypfservice.net

提前致谢

电子

这是我的jQuery:

$(document).ready(function () {
    var numberLinks = $('a.panelImage').length;

    for (var j = 0; j < numberLinks; j++) {

        var currentLink = $('a.panelImage').eq(j);

        //    var currentLink = $('a.panelImage:eq('+j+')');                  
        $('<div class="fred"></div>').insertAfter(currentLink);

        var gtr = currentLink.position().left + 'px';

        $(currentLink).next().css({ // ie div.fred
            'position': 'absolute',
            'background-position': '0 0',
            'top': '100px',
            'left': gtr,
            'display': 'none',
            'width': '5px',
            'height': '5px',
            'overflow': 'hidden',
            'backgroundImage': 'url(http://www.ypfservice.net/templates/ypftemplate/images/foyerPreview.jpg)',
        });

    }


    $('a.panelImage img').mouseover(function () {
        $(this).parent().next().stop().animate({
            height: '138px',
            width: '184px'
        }, 500)
    }).mouseout(function () {
        $(this).parent().next().stop().animate({
            'width': '0px',
            'height': '0px'
        }, 500);
    }); //end function

});

3 个答案:

答案 0 :(得分:1)

处理父元素的mouseover / mouseout事件:

$('a.panelImage').parent().mouseover(function () {
    $(this).find(".panelImage").next().stop().animate({
        height: '138px',
        width: '184px'
    }, 500)
}).mouseout(function () {
    $(this).find(".panelImage").next().stop().animate({
        'width': '0px',
        'height': '0px'
    }, 500);
}); //end function

答案 1 :(得分:0)

较小的图像是较大图像的同一选择器的一部分。当您将鼠标移出较大的图像并将鼠标移到较小的图像上时,会触发事件和结束事件。

尝试为较大的图片提供ID,然后使用它。

答案 2 :(得分:0)

使用mouseenter和mouseleave代替。触摸动画元素时,jQuery会触发mouseout。使用mouseenter / mouseleave不会发生这种情况。