0

我正在使用一些非常标准的 JavaScript/jQuery 来处理悬停元素、图像交换、滑动 div、动画等,没关系。如果/当单击“可悬停”链接元素时将您带到新页面,则mouseenter悬停状态始终保持不变。

例如,如果您将鼠标悬停在某物上并单击它(链接到另一个页面),然后使用后退按钮返回该页面,您单击的元素上的mouseenter状态即使您的鼠标不再位于该元素上也会卡住.

您必须重新加载页面或重新悬停元素以重置所有内容。

$(document).ready(function() {
    $('.mySelector').each(function () {
        $(this).hover(enter, leave);
    });

    function enter(event) { 
        // mouseenter stuff
    };
    function leave(event) { 
        // mouseleave stuff
    };
});

我似乎记得几周前读过这个,有一个非常简单的修复,但我再也找不到了。

有人熟悉适当的解决方案吗?

谢谢!

4

2 回答 2

0

你不需要为此使用.each。此外,功能应该在外部.ready

$(document).ready(function() {
    $('.mySelector').hover(enter, leave);
});

function enter(event) { 
    // mouseenter stuff
}

function leave(event) { 
    // mouseleave stuff
}

编辑:如果你的变量是本地的,你可以这样做:

$(document).ready(function() {
     $('.mySelector').hover(function(){
         // mouseenter stuff
     },
     function(){
         // mouseleave stuff
     });
});
于 2011-05-10T16:12:51.910 回答
0

我最终只是通过使用窗口“卸载”调用鼠标离开功能来“重新设置”悬停效果......

$(window).unload(function() {
    leave();
});

每当您通过单击悬停的元素离开页面时,即使您的鼠标仍悬停在该元素上,也会调用mouseleave函数。点击浏览器的后退按钮不再将您带回具有“卡住”悬停效果的页面。

问题解决了。

于 2011-05-10T18:04:28.800 回答