как проверить, находится ли класс между 50 и 150 пикселями сверху, а затем выбрать атрибут ID классов

0

Я пытаюсь найти более чистый способ определить, находится ли класс в верхней части экрана, но в пределах определенного порога. Например, от 50 до 150 пикселей сверху.

я сделал что-то здесь, используя идентификатор для проверки, но он очень повторяющийся. возможно ли получить класс, работающий с этим вместо ID?

   $(window).on('scroll', function() {
     var scrollTop = $(window).scrollTop();
     var elementFromTop = $('#section_a').offset().top;          
     var distanceFromTop  = (elementFromTop - scrollTop);
     if (distanceFromTop > 0 && distanceFromTop < 100) {
       console.log("section_a in zone- highlight link in nav");
     }
   });

   $(window).on('scroll', function() {
     var scrollTop = $(window).scrollTop();
     var elementFromTop = $('#section_b').offset().top;          
     var distanceFromTop  = (elementFromTop - scrollTop);
     if (distanceFromTop > 0 && distanceFromTop < 100) {
       console.log("section_b in zone- highlight link in nav");
     }
   });

   <div class="section" id="section_a"> width is 100%</div>
   <div class="section" id="section_b"> width is 100%</div>
  • 0
    Я, это возможно. Так что вы пробовали? Кстати, посмотрите на плагин waypoints, если вам нужно более надежное решение
  • 0
    кто-то предложил мне пройтись по всем классам. в конечном итоге ничего не сработало, потому что (я полагаю) бывают моменты, когда на странице появляются 2 класса одновременно. к сожалению, у меня больше нет такого теста кода.
Показать ещё 1 комментарий
Теги:

1 ответ

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

Вы можете попробовать применить этот код, используя jquery.each().

Что-то вроде этого?

$('.myclass').each(function(){
     var id = $(this).attr('id');
     var scrollTop = $(window).scrollTop();
     var elementFromTop = $('#' + id ).offset().top;          
     var distanceFromTop  = (elementFromTop - scrollTop);
     if (distanceFromTop > 0 && distanceFromTop < 100) {
       console.log("id" + id + " in zone- highlight link in nav");
     }
});

Это применит ваш код к каждому элементу этого класса.

  • 0
    просто не забудьте заменить '#section_a' на это var elementFromTop = $ (this) .offset (). top;
  • 0
    Да, правильно, только что сделал это редактирование - спасибо
Показать ещё 3 комментария

Ещё вопросы

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