Не совсем понятно, что вы пытаетесь сделать, но я попробую. Чтобы получить сумму, которую окно прокручивало по вертикали, вы должны использовать функцию jQuery scrollTop()
. Функция height()
дает вам высоту в пикселях элемента, для которого она вызывается, поэтому она не будет очень полезной, если вы хотите использовать значение прокрутки. Что-то вроде этого может быть ближе к тому, что вам нужно:
// bind a function to the window's scroll event, this will update
// the 'active' class every time the user scrolls the window
$(window).scroll(function() {
// find the li with class 'active' and remove it
$("ul.menu-bottom li.active").removeClass("active");
// get the amount the window has scrolled
var scroll = $(window).scrollTop();
// add the 'active' class to the correct li based on the scroll amount
if (scroll <= 500) {
$("#m1").addClass("active");
}
else if (scroll <= 1000) {
$("#m2").addClass("active");
}
else {
$("#m3").addClass("active");
}
}
Даже если вышеупомянутое не на верном пути, есть еще пара моментов, которые могут помочь. Такие строки, как $('#m1').parent().addClass('active').siblings().removeClass('active');
, скорее всего, не соответствуют вашим ожиданиям. Вместо того, чтобы добавлять «активный» класс в li и затем удалять его из братьев и сестер li, он фактически добавляет класс в родительский ul и удаляет его из братьев и сестер ul. Попробуйте удалить .parent()
из каждой строки, и это должно сработать.
Кроме того, поскольку вы используете == в своих условиях if, класс будет добавлен только тогда, когда значение равно 500 или 1000 и т. Д. Я сомневаюсь, что вы намерены. Вот почему в приведенном выше коде я изменил его на <= для условных операторов. </p>
Надеюсь, это поможет.