дублирование функции внутри ее кода

1

У меня есть следующая функция, которая применяет класс (header-hide/header-show) к div на основе пользовательского прокрутки.

$(document).ready(function($) {


      // adjust this number to select when your button appears on scroll-down
      var offset = 75,

        // bind with the button link
        $animation = $('header');

      // apply animation
      $(window).scroll(function() {
        ($(this).scrollTop() > offset) ? $animation.addClass('header-hide').removeClass("header-show"):
          $animation.addClass('header-show').removeClass("header-hide");
      });
.header-hide {
  opacity: 0;
  visibility: hidden;
}

.header-show {
  opacity: 1;
  visibility: visible;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<header class="header-show">

  <div>
    <h3>header</h3>
    <h1>subHeader</h1>
  </div>

</header>

Я хочу сделать аналогичную вещь для другого div (нижний колонтитул/нижний колонтитул добавлен в нижний колонтитул) с другим смещением (300). Я хочу сделать это эффективно, поэтому я не хочу копировать и запускать копию функции и надеялся интегрировать ее в эту. но не может заставить его работать.

  • 0
    Так почему бы не проверить класс на конкретное имя class чтобы установить offset ? Если бы вы могли предоставить демоверсию JsFiddle, это было бы здорово, так как это даст мне и другим возможность работать.
  • 0
    Присвойте определенный атрибут (например, on-scroll-offset-param = "class1, class2, offset") тем элементам, к которым вы хотите применить анимацию. И в окне прокрутки выберите все эти элементы с указанным атрибутом (on-scroll-offset-param). а затем выберите эти элементы и вызовите свою функцию со значениями атрибута вместо жестких кодов.
Показать ещё 2 комментария
Теги:

1 ответ

0

Напишите функцию, которая принимает 4 параметра - элемент, смещение, скрытый класс и класс show -

function reusuableAnimationFunc(elementName, offset, hideClass, showClass) {
  $animation = $(elementName);

  $(window).scroll(function(){
      ( $(this).scrollTop() > offset ) ? $animation.addClass(hideClass).removeClass(showClass):
      $animation.addClass(showClass).removeClass(hideClass);
  });
}
  • 0
    И откуда и когда эта функция должна быть вызвана?
  • 0
    Есть 2 разных смещения (70 и 300) и классы для добавления / удаления (header-hide / header-show) и (footer-hide / footer-show), которые применяются к 2 различным элементам div (header и footer).
Показать ещё 5 комментариев

Ещё вопросы

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