1

ショッピングカート効果を書いています。ユーザーが商品をショッピング カートに追加すると、フローティング カートが表示され、5 秒で非表示になります。

$("#cart").show().delay(5000).hide();

問題は、ユーザーが数量などを変更したい場合、マウスがカートの上にある場合、ユーザーのマウスがカートの上にあるときにカートが消えないようにしたいことです。

4

3 に答える 3

7

これに取り組む2つの主な方法

ユーザーがアイテムにマウスを合わせて非表示を停止する場合は、clearTimeoutを使用します。

var countdown;

$("#cart").show().hover(function() {
    clearTimeout(countdown);
})

countdown = setTimeout(function() {
$('#cart').hide();
}, 5000);

または

ブール値を使用して、非表示を実行するかどうかを決定します

mouseOver = false;
$("#cart").show(function() {
  setTimeout(function() {
    if (!mouseOver)
       $('#cart').hide();
   }, 5000)).hover(function() {
    mouseOver = true;
};

また、次のこともできます(5秒ごとにマウスをアイテム上に移動しない限り、アイテムがフェードします)。

var countdown;

$("#cart").show(resetCountdown).mousemove(resetCountdown);

function resetCountdown() {
   clearTimeout(countdown);
   countdown = setTimeout(function() {
      $('#cart').hide();
   }, 5000);
}
于 2012-09-19T11:58:46.740 に答える
0

このようにすることもできます

$(document).ready(function(){
   $("#cart").show();
   $("#cart").delay(5000).hide();
});

または、次のように編集することもできます

$("#cart").hide('5000');
于 2012-09-19T12:06:11.303 に答える
0

ブール値を false に設定し、マウスオーバーすると true に設定できます。一方、setTimeout を使用して関数を定義します。

setTimeout(function() {
if (!mybool)
$('#cart').hide();
}, 5000);
于 2012-09-19T11:53:31.830 に答える