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

何を行うかは、 aとハンドラーhover()をバインドすることです。何をするかは、それらのハンドラーを発火から取り除くことです。mouseentermouseleaveunbind()

したがって、あなたのコードは、あなたが指示したことを正確に実行しています。クリックすると、ホバー処理が無効になります。

于 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');
});

ps。この関数は問題なく動作しています。あなたは、それが何をすべきかを知らなかっただけです (ホバー イベントのバインドを解除します)。


このようにします(ホバー時にクラスを切り替えます)

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