2016-08-03 3 views
0

Я наткнулся на проблему с меню, которое я хочу открыть, добавив класс «Открыть» при прокрутке над определенным значением. Проблема в том, что я хочу, чтобы он открывался только один раз после этого значения, поэтому он появляется для пользователя, а затем пользователь может открыть и закрыть его с помощью переключателя.Прокрутка Добавить класс по значению только после

Я использовал этот метод:

<script type="text/javascript"> 
jQuery(function() { 
    //caches a jQuery object containing the header element 
    jQuery(window).scroll(function() { 
     var scroll = jQuery(window).scrollTop(); 

     if (scroll >= 1150) { 
      jQuery(".menubar").addClass("open"); 

     } 
    }); 
}); 
</script> 

Вопрос заключается в том, что после значения 1150, он держит внезапный после каждого свитка в пределах этого значения. Как мне остановить и сделать это событие только один раз?

Спасибо заранее!

ответ

4

Проверьте, существует ли класс. Или используйте переменную, если класс слишком сменяется:

var isOpened = false; 

jQuery(function() { 
    //caches a jQuery object containing the header element 
    jQuery(window).scroll(function() { 
     var scroll = jQuery(window).scrollTop(); 

    // The original if statement, testing for `.hasClass()` 
    // if (scroll >= 1150 && !$(".menubar").hasClass()) { 

     if (scroll >= 1150 && !isOpened) { 
      isOpened = true; 
      jQuery(".menubar").addClass("open"); 

     } 
    }); 
}); 
+0

Я не могу сделать это так, потому что пользователь может переключить «открытый» класс, закрыв его вручную. В этом случае класс не будет там, и он снова появится со свитком. –

+0

Затем создайте другую переменную, например 'userClosed', и проверьте это тоже. @LeonVFX – eisbehr

+0

Проверьте изменения. –

0

Вы можете установить флаг, а затем просто установить флажок.

jQuery(function() { 
    var menuBarOpenedOnce = 0; 

    //caches a jQuery object containing the header element 
    jQuery(window).scroll(function() { 
     var scroll = jQuery(window).scrollTop(); 

     if (scroll >= 1150 && menuBarOpenedOnce === 0) { 
      jQuery(".menubar").addClass("open"); 
      menuBarOpenedOnce = 1; 
     } 
    }); 
}); 
Смежные вопросы