jQuery делает что-то, КОГДА происходит событие

Я пытаюсь добавить 2 класса в div, первый нужно добавить в точке, КОГДА scrolltop равен определенной сумме, второй добавляется, ЕСЛИ scrolltop больше определенной суммы.

Вот мой код jQuery:

var Scroll = $(window).scrollTop();
var ScrollFXfullHeight = $('.header-wrapper').height(); 

    if (Scroll == ScrollFXfullHeight) {
        $("#navigation, .hidden_menu_link_container").addClass("fixed");
    } else if (Scroll > ScrollFXfullHeight) {
        $("#navigation, .hidden_menu_link_container, .stop_the_jump").addClass("thinner");  
    }

Вышеупомянутое решение, очевидно, использует 2 оператора if, проблема здесь в том, что страница должна точно соответствовать ScrollFXfullHeight для первого добавляемого класса, однако, если вы просто быстро прокрутите его, событие не запускается.

Есть ли способ сказать «КОГДА Scroll == ScrollFXFullHeight добавить класс», чтобы он делал это даже при прокрутке?


person Sam Skirrow    schedule 14.01.2015    source источник
comment
Не на самом деле нет. Прокрутка обновляется только настолько быстро, насколько это позволяет поток пользовательского интерфейса браузера, поэтому в значении scrollTop есть пробелы. Конечно, логика здесь в любом случае ошибочна, так как после срабатывания Scroll == ScrollFxFullHeight Scroll > ScrollFxFullHeight все равно будет истинным?   -  person Rory McCrossan    schedule 14.01.2015


Ответы (1)


Убедитесь, что Scroll больше или равно ScrollFXfullHeight, затем проверьте, имеет ли ваш элемент уже класс fixed. Если нет, добавьте это:

if (Scroll >= ScrollFXfullHeight) {
    if(!$("#navigation, .hidden_menu_link_container").hasClass('fixed')) { 
        $("#navigation, .hidden_menu_link_container").addClass("fixed");   
    } 
    $("#navigation, .hidden_menu_link_container, .stop_the_jump").addClass("thinner");
}

Таким образом, даже если пользователь пролистает эту точную точку, класс все равно будет добавлен, но добавлен только один раз. Я думаю, вам, вероятно, также следует проверить, был ли уже добавлен класс thinner, но это ваш звонок

person Brett Gregson    schedule 14.01.2015