Запрет прокрутки скрипта jquery от запуска дважды

0

Я новичок в jquery и собрал следующий код, чтобы сделать DIV после заданного количества прокрутки. Если прокрутка выполняется, DIV исчезает. Необязательно, как только DIV появился, есть ссылка, чтобы закрыть его. Это все работает по назначению, кроме того, я хочу, чтобы сценарий запускался только один раз. В настоящий момент, если я прокручу резервную копию, снова появится желтая рамка. Как я могу гарантировать, что ящик остается закрытым? Как еще один вариант, можно ли интегрировать файлы cookie или localStorage?

Большое спасибо! Russ.

Javascript:

$(function () {
    var target = $(".box");
    if ($(window).scrollTop() > 30) {
        target.hide();
    }
    $(window).scroll(function () {
        var pos = $(window).scrollTop();
        if (pos > 30) {
            target.stop(true, true).fadeIn('slow');
        } else {
            target.stop(true, true).fadeOut('slow');
        }
    });
    $('a.close').click(function () {
        $($(this).attr('href')).slideUp();
        return false;
    });
}); 

Вот ссылка jsfiddle на мой код: jsfiddle link

Теги:
scrolltop

3 ответа

0
Лучший ответ

Вы можете удалить прокрутку события из окна, а для localStorage - сделать что-то вроде этого:

$(function () {
    var target = $(".box");
    if ($(window).scrollTop() > 30) {
        target.hide();
    }
    $(window).scroll(function () {
        var pos = $(window).scrollTop();
        if (pos > 30) {
            target.stop(true, true).fadeIn('slow');
        } else {
            target.stop(true, true).fadeOut('slow');
        }
        if(localStorage['noNotification'] == 'true'){
            $(window).off('scroll');
        }
    });
    $('a.close').click(function () {
        $($(this).attr('href')).slideUp();
        $(window).off('scroll');
        localStorage['noNotification'] = 'true';
        return false;
    });

});

  • 0
    Работал угощение! Спасибо!
  • 0
    Знаете ли вы, как я мог бы использовать cookie или localStorage, чтобы при повторном посещении этой страницы в браузере DIV больше не появлялся?
Показать ещё 3 комментария
1

Вы можете удалить класс, чтобы убедиться, что окно остается в комплекте с removeClass(). Или непосредственно $(".box").remove() после анимации. Вы можете сохранить этот вариант с помощью cookie, но если клиент удалит свои файлы cookie, он потерян.

0

попробуйте это http://jsfiddle.net/AbwXu/4/

var notdisplayed=true;
$(function(){ 
    var target = $(".box");
    if($(window).scrollTop() > 30){
      target.hide();
    }
    $(window).scroll(function(){
        var pos = $(window).scrollTop();
        if(pos > 30  && notdisplayed){
            target.stop(true, true).fadeIn('slow');

        } else {
            target.stop(true, true).fadeOut('slow');
            notdisplayed=false;
        }
    });
    $('a.close').click(function() {
        $($(this).attr('href')).slideUp();
        notdisplayed=false;
        return false;
    });
  • 0
    Привет, спасибо за такой быстрый ответ! К сожалению, я не вижу желтый DIV, когда прокручиваю вниз в вашей версии.
  • 0
    Пожалуйста, проверьте еще раз, я вижу, вы уверены, что не видите? Кто-нибудь еще может проверить?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню