1

jQuery を使用してページの div を非表示にしています。

$(document).ready(function(){   
$('#message').hide();

ページの特定の部分がスクロールして表示されると、div が次を使用して表示されます

$(window).scroll(function() {

            var top = 0;
            top = $(window).scrollTop();


            if((top >= 1000) && (top < 2000)){

                $('#message').fadeIn('slow');
            }    
            }

次のようにこれに閉じるボタンを追加したい

$('a#message-hide').click(function() {
$('#message').hide('fast');
return false;

これまでのところすべて問題ありませんが、私が理解できない部分は、ユーザーがページのトリガー位置にスクロールして戻ったときに div の再表示を停止する方法です...?

4

3 に答える 3

2

次のように、コードを少し再配置して、バインドできないようにすることができます (巻き添え被害を与えない方法で)。

 function checkShowDiv() {
   var top = $(window).scrollTop();
   if(top >= 1000 && top < 2000) {
     $('#message:hidden').fadeIn('slow'); //prevent re-fades with :hidden
   }
 }
 $(window).scroll(checkShowDiv);

次に、閉じる関数で:

$('a#message-hide').click(function() {
  $(window).unbind('scroll', checkShowDiv);
  $('#message').hide('fast');
  return false;
});

これが行うことは、 を閉じること<div>.unbind()、その上で行われるチェックscrollで再び表示される可能性があることの両方です。

于 2010-05-25T11:47:08.033 に答える
2
$('a#message-hide').click(function(e) {
   e.preventDefault(); // Better than returning false
   $('#message').remove(); // Remove the message forever
});

これにより、ページから #message 要素を削除するだけで、ユーザーが「トリガー位置」までスクロールすると、再び表示されなくなります。

于 2010-05-25T11:57:50.290 に答える
0

@Nick Craverの回答は、ユーザーがdivを閉じた後でもdivが再表示されるのを止めたい場合にのみ機能します。ただし、コードは、1000 と 2000 の間でスクロールすると、div が継続的にフェードインするようにします。動作を停止するには、div が表示されているかどうかを示すフラグを設定し、div を表示する前にフラグを確認します。

于 2010-05-25T11:54:13.987 に答える