Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/404.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用“后退”按钮从重新访问的页面中删除悬停效果_Javascript_Jquery_Dom_Hover_Hyperlink - Fatal编程技术网

Javascript 使用“后退”按钮从重新访问的页面中删除悬停效果

Javascript 使用“后退”按钮从重新访问的页面中删除悬停效果,javascript,jquery,dom,hover,hyperlink,Javascript,Jquery,Dom,Hover,Hyperlink,我在这个网站上工作,我的身体有点不舒服。当我点击便笺上的一个链接,然后点击后退按钮时,该链接似乎仍然悬停在上面 什么是最不需要脚本的方式来防止链接认为它仍在悬停?这个问题出现在Safari、Firefox和Opera中,但不在IE8或Chrome中。在Mac和Windows上测试,结果相同(当然IE8除外……仅限Windows) 我在想,将任何类型的mouseover事件附加到文档中可能是没有效率的,因为它会经常触发,除非我严重误解了事件在DOM中冒泡的方式 这里有一些javascript和ht

我在这个网站上工作,我的身体有点不舒服。当我点击便笺上的一个链接,然后点击后退按钮时,该链接似乎仍然悬停在上面

什么是最不需要脚本的方式来防止链接认为它仍在悬停?这个问题出现在Safari、Firefox和Opera中,但不在IE8或Chrome中。在Mac和Windows上测试,结果相同(当然IE8除外……仅限Windows)

我在想,将任何类型的mouseover事件附加到文档中可能是没有效率的,因为它会经常触发,除非我严重误解了事件在DOM中冒泡的方式

这里有一些javascript和html源代码,如果您不想涉猎我链接到的内容:

/* Link hover effects */

//Fix Opera quirk:
$('.tooltip a').css('left', '0px');

// jQuery hover, animating color smoothly.
// If it's in the #tooltip, bump it to the right 5 pixels while hovered.
$('a').hover(function(){
    if ($(this).is('.tooltip a')) {
        $(this).stop().animate({
            color: '#D42B1D',
            left:  5
        },{
            duration: 'fast'
        });
    } else {
        $(this).stop().animate({color: '#D42B1D'},{
            duration: 'fast'
        });
    }
},function(){
    if ($(this).is('.tooltip a')) {
        $(this).stop().animate({
            color: '#005B7F',
            left:  0
        },{
            duration: 600
        });
    } else {
        $(this).stop().animate({color: '#005B7F'},{
            duration: 600
        });
    }
});


--------------------------------------------------


    <div class="tooltip transp">
        <ul>
            <li><a href="#">About Us</a></li>
            <li><a href="news.php">News / Events</a></li>
            <li><a href="location.php">Contact Us</a></li>
            <li><a href="directions.php" target="_blank">Directions</a></li>
            <li><a href="#">Links</a></li>
        </ul>
    </div>
/*链接悬停效果*/
//修复歌剧怪癖:
$('.tooltipa').css('left','0px');
//jQuery悬停,平滑设置颜色动画。
//如果在#工具提示中,则在悬停时将其向右撞击5像素。
$('a')。悬停(函数(){
如果($(this).is('.tooltipa')){
$(this).stop().animate({
颜色:“#D42B1D”,
左:5
},{
持续时间:“快速”
});
}否则{
$(this.stop().animate({color:'#D42B1D'}{
持续时间:“快速”
});
}
},函数(){
如果($(this).is('.tooltipa')){
$(this).stop().animate({
颜色:“#005B7F”,
左:0
},{
持续时间:600
});
}否则{
$(this.stop().animate({color:'#005B7F'}{
持续时间:600
});
}
});
--------------------------------------------------

无法为您提供快速修复,只能提供建议。只要试着编辑代码以使用mouseenter和mouseleave事件。从jQuery 1.4.1开始,可以指定悬停事件(映射到“mouseenter mouseleave”)。在大多数情况下,这种方法效果更好

测试代码 对我有用

$('.tooltip').delegate('a', 'mouseenter', function() {

    $(this).stop().animate({
        color: '#D42B1D',
        left:  '5px'
        },{
            duration: 'fast'
    });

});

$('.tooltip').delegate('a', 'mouseleave', function() {

    $(this).animate({
        color: '#005B7F',
        left:  '0'
    },{
        duration: 'fast'
    });

});

这将解决你的问题

$(window).bind('beforeunload', function(){

     $('a.tooltip').css({color: '#005B7F', left:  0});

});

然而,我会问自己,如果所有这些js都是值得的,那么使用css和:hover伪类可以实现这些功能。

我感谢您的帮助,但是hasClass()只有在所讨论的元素属于类时才起作用。。。在本例中,我想看看它的父级是否有一个类。我刚刚估计.is('.tooltip a')比.parent().hasClass('tooltip')短。此外,不幸的是,返回页面后,mouseenter和mouseleave事件无法解决问题,即使通过.live()附加。但是,我再次感谢你的帮助!是的,我知道。但不是delegate()imho支持的所有事件。如果我错了,请纠正我。上面的代码是一个巨大的资源消耗,因为每个元素mouseover/leave都会触发函数。delegate优先于.live,它不会在文档中冒泡,因为您可以指定侦听事件的容器,例如$('.tooltip')。delegate('a','mouseleave',function…)@gearsdigital delegate具有与live一样多的支持。您确定吗<代码>$('.tooltip')。委托('a','mouseenter',function(){对我不起作用。
$('.tooltip a')。live('mouseenter',function(){
起作用。效果很好。我完全忘记了那个事件!非常感谢。客户希望尽可能平稳地过渡,所以客户支付的费用,客户就可以得到;)@别担心,我理解你需要让客户开心!!祝你好运:)