0

スクロールするとボタンが表示されるdivがあります。このボタンを最後のスクロールから 2 秒間だけ表示したい。私のスクリプトには、理解できない不具合があります。2 秒間表示されることもあれば、それより短いこともあれば、すぐに非表示になることもあります。

私が思う問題は、最初のスクロールからのみカウントされ、その後の各スクロールでは、期限が切れるまでこのタイマーがリセットされないことです。タイマーが切れると、スクロールが再び表示されます。

$("#layout-main").live('scroll',function(){
 $("#main-totop").show();
});
$("#main-totop").live('click',function(){
 mainapi.scrollTo(0,0);
 setTimeout(function(){
  $('#main-totop').hide();
 }, 2000); 
});
4

3 に答える 3

0

これはうまくいくはずです。

$("#layout-main").live('scroll',function(){
    $("#main-totop").stop().show(0).delay(2000).hide(0);
});
$("#main-totop").live('click',function(){
    mainapi.scrollTo(0,0);
    $('#main-totop').hide();
});
于 2013-02-22T11:02:17.943 に答える
0

で試してみてください。使用することを.promise().done()お勧めします。.on().live()been removed in jQuery version 1.9.0+

$("#layout-main").on('click', '#main-totop', function(){
   mainapi.scrollTo(0,0).promise().done(function(){
       setTimeout(function(){
           $(this).hide();
       }, 2000);
   });
});

または、次のように試すことができます:

$("#layout-main").on('click', '#main-totop', function(){
   mainapi.scrollTo(0,0).promise().done(function(){
      $(this).delay(2000).hide();
   });
});
于 2013-02-22T11:07:47.127 に答える
0

あなたのコードは、あなたが説明したものを表していません。

#layout-mainをスクロールすると、#main-totop要素が表示されます。クリックすると上部にスクロールし、2 秒後に非表示になります。

説明から、最後のスクロール後 2 秒間だけボタン (おそらく#main-totop ) が表示され、その後非表示になります。

私が正しければ、次のようなものが必要です。

var mytimer;
$("#layout-main").live('scroll',function(){
    clearTimeout(mytimer);
    $('#main-totop').show();
    mytimer = setTimeout(function(){
      $('#main-totop').hide();
    }, 2000); 
});
$("#main-totop").live('click',function(){
 mainapi.scrollTo(0,0);
});
于 2013-02-22T11:09:00.540 に答える