Игнорировать функцию?

Итак, у меня есть div, который скользит вниз при прокрутке в нижней части страницы. В этом div у меня есть якорь «X», который снова перемещает его вверх (это в jQuery). Но если я прокручиваю, div снова скользит вниз (естественно). Итак, я хочу, чтобы X, прежде всего, заставлял «#topDiv» скользить вверх, а затем игнорировал функцию, которая заставляет его скользить вниз.

Полный код:

  $("#topDiv").hide();

  $(window).scroll(function () {
      if ($(window).scrollTop() + $(window).height() > $(document).height() - 500) {
          $("#topDiv").slideDown();
      }


      if ($(window).scrollTop() + $(window).height() < $(document).height() - 800) {

          $("#topDiv").slideUp();
      }
      $("#closeTop").click(function () {
          $("#topDiv").slideUp();
          return false;
      });
  });

Демонстрационная страница ( http://tutorials.underbakke.net/js/функция/)


person imp    schedule 15.01.2012    source источник


Ответы (2)


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

$("#topDiv").hide();

$(window).on('scroll', showTopDiv);

function showTopDiv() {
      if ($(window).scrollTop() + $(window).height() > $(document).height() - 500) {
          $("#topDiv").slideDown();
      }
}

$(window).on('scroll', function() {
      if ($(window).scrollTop() + $(window).height() < $(document).height() - 800) {
          $("#topDiv").slideUp();
      }
});

$("#closeTop").click(function () {
      $("#topDiv").slideUp();
      $(window).off('scroll', showTopDiv);
      return false;
});

Кроме того, в вашей функции slideup добавление $("#topDiv").is(':visible') к оператору if гарантирует, что он не будет выполняться без необходимости.

И действительно ли нужно привязывать функцию щелчка к каждой прокрутке?

person adeneo    schedule 15.01.2012

Попробуй это:

$("#topDiv").hide();

$(window).addEventListener('scroll', function(event) {
   if ($(window).scrollTop() + $(window).height() > $(document).height() - 500) {
      $("#topDiv").slideDown();
  }


  if ($(window).scrollTop() + $(window).height() < $(document).height() - 800) {
      $("#topDiv").slideUp();
  }

  $("#closeTop").click(function () {
      $("#topDiv").slideUp();
      $(window).removeEventListener('scroll',arguments.callee,false);
  });
}
person Jesse Pollak    schedule 15.01.2012