jQuery show div нажмите, чтобы скрыть, затем больше не показывать - PullRequest
1 голос
/ 25 мая 2010

Я использую 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, когда пользователь прокручивает обратно в положение триггера на странице ...?

Ответы [ 3 ]

2 голосов
/ 25 мая 2010
$('a#message-hide').click(function(e) {
   e.preventDefault(); // Better than returning false
   $('#message').remove(); // Remove the message forever
});

При этом вы просто удалите элемент #message со своей страницы, и когда пользователь перейдет к «положению триггера», он больше не будет отображаться.

2 голосов
/ 25 мая 2010

Вы можете немного переставить свой код, чтобы он не привязывался (таким образом, чтобы он не наносил сопутствующий ущерб), например:

 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, которая может показать ее снова.

0 голосов
/ 25 мая 2010

@ Ответ Ника Крейвера сработает, только если вы хотите остановить появление div, даже после того, как пользователь закрыл div. Но ваш код заставит div постепенно исчезать, когда вы прокручиваете ставку ween 1000 и 2000. Чтобы остановить поведение, вы можете иметь флаг, который указывает, отображается ли div, и проверять флаг перед отображением div.

...