1

ホバーすると拡大するサイドバーがあります。

拡張すると、折りたたむと邪魔になることがあるので、誰かがサイドバーをクリックしたときにホバリングのバインドを解除したい場合があります。

下部のコードは、最初にバインドを解除するために機能しますが、ホバリングを再度有効にするための2回目のクリックは機能しません。

    $('.action').click(function(){
        $(this).unbind('mouseenter').unbind('mouseleave');
        $(this).click(function(){
            $(this).bind('mouseenter').bind('mouseleave');
        });
    });

では、ロックされたときにホバリングを再度バインドするにはどうすればよいですか(構築の場合は禁止してください)。

よろしく

4

2 に答える 2

1

実際のイベントをバインドする必要があります.bind('mouseenter', function () { /* whatever */ });。jQueryは、すでに存在していたものを再バインドすることを自動的に認識しません。必要に応じて、名前付き関数を使用できるため、書き直す必要はありません。

于 2012-05-19T14:06:18.580 に答える
1
$('.action').on('mouseenter mouseleave', doStuffOnHover); //initial handler

var bound = true;

$('.action').on('click', function(){
      $(this)[bound ? 'off' : 'on']('mouseenter mouseleave', doStuffOnHover);
      bound=bound ? false:true;
});

function doStuffOnHover() {
   //do stuff here
}

フィドル

mouseenter / Leaveで別のことを行う場合は、もちろん2つの関数が必要になります。

于 2012-05-19T14:12:26.423 に答える