Мышь jQuery с календарем - PullRequest
       16

Мышь jQuery с календарем

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

Я знаю, что было несколько вопросов, касающихся колесика мыши и прокрутки;Я не уверен, применимо ли какое-либо из них к моей конкретной проблеме.Если это так, то я прошу прощения за этот вопрос.

Тем не менее, я использую jQuery с FullCalendar .Точнее говоря, я ввел небольшую функцию для запуска календаря для перемещения вперед или назад при прокрутке мыши.Он прекрасно работает с вашим типичным колесом прокрутки старой школы.Однако при использовании мыши Apple Magic Mouse она слишком сильно прокручивается!Текущий код, который я использую:

 $('#my_calendar')
    .bind('mousewheel', function(event, delta) {
    var view = $('#monthCalendar').fullCalendar('getView');

    if (view.name == "month") {
                if (delta > 0) { $(this).fullCalendar('prev'); }
                if (delta < 0) { $(this).fullCalendar('next'); }
                return false;
    }
 });

Как бы я мог это исправить, чтобы, если пользователь использует Magic Mouse (или подобное), он мог ограничить количество месяцев, которыепрокручивать вперед или назад?

Любая помощь будет отличной!Спасибо.

1 Ответ

2 голосов
/ 22 января 2012

Вы пробовали использовать функцию «debounce»?Это немного изменено в рамках подчеркивания:

function debounce(func, wait) {
    var timeout;
    return function() {
      var context = this, args = arguments;
      var later = function() {
        timeout = null;
        func.apply(context, args);
      };
      clearTimeout(timeout);
      timeout = setTimeout(later, wait);
    };
  };

Ваш полученный код будет выглядеть следующим образом:

 function debounce(func, wait) {
      var timeout;
      return function () {
          var context = this, args = arguments;
          var later = function () {
              timeout = null;
              func.apply(context, args);
          };
          clearTimeout(timeout);
          timeout = setTimeout(later, wait);
      };
  };

  var scrolldb = debounce(handleScroll, 200);

  $('#my_calendar').bind('mousewheel', scrolldb);

  function handleScroll(event, delta) {
      var view = $('#monthCalendar').fullCalendar('getView');

      if (view.name == "month") {
          if (delta > 0) {
              $(this).fullCalendar('prev');
          }
          if (delta < 0) {
              $(this).fullCalendar('next');
          }
          return false;
      }
  }

Оптимизируйте параметр wait, пока он не будет работать гладко с помощью Magic Mouse.Я проверил это с помощью прокрутки и Magic Mouse.

...