0

カルーセルを実装する次のコードがあります。ユーザーが数秒間ランダムにホバーを実行すると、jquery hover() がそれらをキューに入れてすべて実行するように見えます。そのカルーセルをどのように機能させたいかは、最新のホバーのみを実行することです。

$('#broker_carousel_controls li a').hover(function (e) {            
        e.preventDefault();
        var t = $(this);
        var speed = 'fast';
        $('#broker_carousel_controls li a.bcc_active').removeClass('bcc_active');
        var idx = $('#broker_carousel_controls li a').index(t);
        t.addClass('bcc_active');

        $('#broker_carousel li:visible').hide(speed, function () {

        });
        $('#broker_carousel li').eq(idx).show(speed, function () { 
            //busy = false;             
        });


    }, function () { });
4

2 に答える 2

2

and関数.stop()の前に使用してみてください。現在のアニメーションを停止して、次のアニメーションをすぐに開始できるようにします。このようなイベントのキューイングを防ぐために時々使用します。hideshowstop()

$('#broker_carousel li:visible').stop().hide(speed, function () {
});
$('#broker_carousel li').eq(idx).stop().show(speed, function () { 
    //busy = false;             
});
于 2011-01-04T15:33:46.757 に答える
0

ホバー イベントでは、最後に表示する必要のある項目の変数を保持できます。次に、ショーのコールバック関数でその変数を確認します。これにより、最大 2 つの表示/非表示になります。これは、それらが物の上を激しく移動しているだけで、使用時に吃音がない場合です.stop()

$('#broker_carousel_controls li a').hover(CarouselHover
, function () { });

var lastQueue = null;
function CarouselHover(e)
{
        e.preventDefault();
        if (lastQueue == null)
        {
          lastQueue = this;
          StartHoverShow();
        }
        else
        {
          lastQueue = this;
        }
}

function StartHoverShow()
{
      if (lastQueue != null)
      {
        var t = $(lastQueue);
        lastQueue = null;
        var speed = 'fast';
        $('#broker_carousel_controls li a.bcc_active').removeClass('bcc_active');
        var idx = $('#broker_carousel_controls li a').index(t);
        t.addClass('bcc_active');

        $('#broker_carousel li:visible').hide(speed, function () {

        });
        $('#broker_carousel li').eq(idx).show(speed, function () { 
            //busy = false;  
           ShowCallback();
        });
      }
}

function ShowCallback()
{
  if (lastQueue != null)
  { 
    StartHoverShow();
  }
}
于 2011-01-04T16:07:12.420 に答える