2016-06-06 2 views
0

У меня есть функции scroll, я хотел бы что-то сделать после завершения toggle. В настоящее время у меня есть проблема с моей функцией, выполняемой несколько раз, потому что она срабатывает на scroll.jQuery сделать что-то после переключения() complete

Псевдо потока:

// Если ДИВ видны на свитке скрыть

// Если положение прокрутки 63 или более добавить класс

// Если положение прокрутки меньше, чем 63 добавить/удалить класс

Мой код:

$(window).scroll(function() { 

     // If search open on scroll hide 
     if($('.filter').length > 0){ 
      if($('.search').is(":visible")){ 

       $('.search').toggle("slow"); 
       $('.search').hide(); 
      } 
     } 

     // Add Fixed position when position 63 
     if($('.filter').length > 0 && $(window).scrollTop() >= 63){ 

      if($('.search').is(":visible")){ 

       $('.search').slideToggle("slow", function() { 
        $('.search').hide(); 
       }); 

      } 

      // Set fixed 
      $('.filter').addClass('fixed-position'); 

     } 

     // Remove fixed on 61 
     if($('.filter').length > 0 && $(window).scrollTop() <= 61 && $('.filter').hasClass('fixed-position')){ 

      $('.filter').removeClass('fixed-position'); 

     } 

    }); 

Таким образом, я попытался, если сначала IF, чтобы скрыть поиск, чтобы он не выполнял этот оператор IF, когда я продолжаю прокручивать. (Failed)

Во втором случае я пытался использовать различные функции с сайта jQuery, но результат такой же.

Я открыт для предложений, Спасибо

ответ

0

, как вы написали свой код, это имеет смысл, что функция выполняется несколько раз (раза больше, чем вы хотите).

Быстрое и простое решение для предотвращения множественных вызовов функций - отслеживать, когда ваша функция выполняется с использованием логической переменной, и затем соответствующим образом сбрасывать эту переменную, чтобы ваша функция снова вызывалась, когда какое-то событие повторяется снова.

Либо, либо вы придерживаетесь другого подхода к этой проблеме.

Смежные вопросы