幻灯片上的jquery删除按钮的悬停状态

时间:2012-10-18 05:41:36

标签: jquery hover jquery-animate

使用Jquery,当您单击按钮时,我可以简单地向下滑动div。 问题是,按钮:悬停状态未被删除。

JS FIDDLE:http://jsfiddle.net/Y6gHb/9/

(小注意,在我的网站版本上,我实际上需要再次鼠标悬停按钮,然后鼠标移开,以使其恢复正常状态。)

这是JS代码:

   $("a").click(function() {
        var div = $("#toggleDiv"); 
        if (!div.hasClass("open")) {
            div.animate({
                height: "300px"
            },"fast").addClass("open");
        } else {
            div.animate({
                height: "150px"
            },"fast").removeClass("open");

        }
        return false;
    });

正如您在小提琴中看到的那样,幻灯片后链接会保持红色。在这个简单的例子中,这看起来不是一个大问题,但在我的网站上,它真的很烦人。

我的问题是:

我做错了吗?或者如何在点击时删除:悬停状态?

(我在Twitter bootstrap工具提示中遇到了类似的问题)。

1 个答案:

答案 0 :(得分:1)

在我的测试中,每当我移动鼠标时它都会移除它,但是仍然不能保持链接“徘徊”#34;你可以这样欺骗它:

$(this).unbind('onmouseover').unbind('onmouseout');

但是,如果您为这些事件添加了绑定事件,则应在删除事件后重新附加事件。

如果您有以下内容,则 适用:

$("a").hover(function(){
//Do fancy stuff
});

所以你会做这样的事情:

    function hoverLinkEffect(e) {
        // Do fancy stuff                                
    }

//Then on the a click event handler
$(this).unbind('onmouseover').unbind('onmouseout').on('hover',hoverLinkEffect);

以下是完整代码:

$(document).ready(function() {

    $("a").click(function() {
        $(this).unbind('onmouseover').unbind('onmouseout');
        var div = $("#toggleDiv"); 
        if (!div.hasClass("open")) {
            div.animate({
                height: "300px"
            },"fast").addClass("open");
        } else {
            div.animate({
                height: "150px"
            },"fast").removeClass("open");

        }
        return false;
    });

});​