0

私はこれで自分の利益のためにあまりにも賢くしようとしているのではないかと思います!

私は、ホバーイン/アウトしたときに要素のクラスのオン/オフを切り替えるjQueryプラグイン関数に取り組んでいますが、ホバーアウトする前に要素の内側をクリックしてもクラスが削除されず、にカーソルを合わせる前に、要素にはすでにそのクラスがあります。

私は次のことを考え出してみました:

    $.fn.showHover = function(settings) {
    this.bind('mouseover', function hoverIn(){
        if ($(this).hasClass('active') == false) {
            $(this).addClass('active');
            $(this).bind('click', function getFocus(){
              $(this).unbind('mouseout', hoverOut);
            })
            $(this).bind('mouseout', function hoverOut(){
              $(this).removeClass("active");
              $(this).unbind('click', getFocus);
            })
        }
    })
    return this;
};

...クリックする前にホバーアウトし、クラスを削除してクリックのバインドを解除する場合のアイデア-ホバーアウトする前にクリックすると、マウスアウトのバインドが解除され、クラスが削除されることはありません。

明らかに(私はここで助けを求めているので!)それは機能しません-ホバーアウトする前に要素の内側をクリックするかどうかに関係なく、クラスは削除されます。

誰かがそれが失敗している理由を指摘し、おそらくそれを回避するためのより良い方法を提案できますか?ありがとう!

4

2 に答える 2

1

CSSを使用して要素の外観を変更することが目標である場合、簡単な解決策の1つは、別の名前で別のセレクターを追加することです。

.active_hover,
.active_click { ... }

次に、hover / unhoverイベントをバインドして「active_hover」クラスを追加/削除し、clickイベントをバインドして「active_click」クラスを追加します。

于 2009-11-23T20:24:58.607 に答える
0

あなたはこれを行うことができます

$(".class").mouseenter( function(){
$(this).css("edit css"); // you can use .animate instead of .css if you want
});
$(".class").mouseleave( function(){
$(this).removeAttr('style');
});
$(".class").click( function(){
$(this).addClass("setactiveclass");
});

したがって、ホバーするとインラインcssが設定され、divの外にホバーすると、jqueryによって設定されたインラインスタイルが削除されます..そしてそれをクリックすると. 互いに干渉しないようにハードクラスが設定されています。

于 2014-08-25T09:32:33.057 に答える