0

我在鼠标悬停/离开/单击功能方面遇到了一个小问题。

它工作正常,但在单击元素后它失去了悬停功能。单击元素后,我无法获得悬停功能。

$('.bg').click(function () {
    $(this).unbind("mouseenter mouseleave");
    $('.bg').removeClass('active');

    $(this).addClass('active');

}).hover(function () {    
    $(this).addClass('active');
}, function () {    
    $(this).removeClass('active');
});

jsfiddle——

http://jsfiddle.net/squidraj/SVkBs/1/

不知道我在哪里做错了。谢谢。

4

3 回答 3

3

您可以:hover像这样将 CSS 添加到元素中:http: //jsfiddle.net/Agony/SVkBs/2/

于 2013-10-28T19:51:40.220 回答
1

什么hover()是绑定一个mouseenter和一个mouseleave处理程序。所做的是unbind()从触发中删除这些处理程序。

因此,您的代码完全按照您的要求执行;当您单击时,它会禁用您的悬停处理。

于 2013-10-28T19:55:45.993 回答
1
$('.bg').click(function () {
    /* remove that following line  */
    $(this).unbind("mouseenter mouseleave");  /* <-- this will UNBIND the 'hover' */
    /* did you remove that previous line ? */
    $('.bg').removeClass('active'); /* <-- this will remove 'active' from .bg */
    $(this).addClass('active');  /* <-- this will add 'active' on this(.bg) */
}).hover(function () {    /* <-- this will try to addClass 'active' on hover .. */
    $(this).addClass('active');
}, function () {    /* <-- this will try to removeClass on the otherHand (callback) */
    $(this).removeClass('active');
});

附言。这个函数工作得很好,你只是不知道它应该做什么(取消绑定悬停事件)。


这样做(在悬停时切换类)

$('.bg').hover(
       function(){ $(this).addClass('active') },
       function(){ $(this).removeClass('active') }
)
于 2013-10-28T19:56:36.593 回答