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

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

1 голос
/ 15 января 2012

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

Полный код:

  $("#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/function/)

Ответы [ 2 ]

3 голосов
/ 15 января 2012

Вы можете использовать методы включения / выключения, чтобы отменить привязку слайда после нажатия кнопки «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;
});

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

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

0 голосов
/ 15 января 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);
  });
}
...