полный календарь с несколькими календарями, как нажать предыдущий / следующий для всех календарей

#javascript #jquery #fullcalendar #fullcalendar-scheduler #fullcalendar-3

#javascript #jquery #полный календарь #полный календарь-планировщик #полный календарь-3

Вопрос:

Итак, я использую fullcalendar для этого проекта, имея несколько календарей на одной странице, каждый со своими кнопками prev / next / today. Чего я пытаюсь добиться, так это того, что при нажатии на предыдущий / следующий он будет срабатывать для всех календарей на странице, а не только для того, к которому он привязан, если это имеет смысл. Я попытался использовать jQuery для достижения этой цели, поскольку они имеют одинаковые имена классов, ниже приведен пример функции click, которую я пробовал, но работает не совсем так, как я ожидал.

 $(".fc-next-button").click(function (i) {
        var nextBtn = $('.fc-next-button');
        //alert(nextBtn.length);
        for (var i = 0; i < nextBtn.length; i  ) {
            nextBtn[i].click();
        }
    });
 

Например, у меня пять календарей, когда я нажимаю кнопку далее, функция заставляет текущий календарь перемещаться на 5 недель вперед, а не на все календари. Любая помощь будет оценена.

Комментарии:

1. Какая версия FullCalendar? И зачем вам нужно 5 из них?

2. @ADyson Версия 3.10.2, и я показываю календарь нескольких людей на неделю

3. Если вы отображаете календари нескольких людей, почему бы не использовать один календарь и отображать события разных людей разными цветами, чтобы различать их. Вы могли бы использовать источники событий, чтобы упростить это, если хотите. Вы даже можете использовать функцию планировщика, чтобы сделать ее более понятной, если вы в состоянии это сделать. P.S. Вы осознали, что на несколько версий отстаете от последней версии FullCalendar (v5)?

4. @ADyson Да, я понимаю, что я использую версию odler, и я пытаюсь сохранить ее отдельно в этом сценарии по замыслу

Ответ №1:

Это происходит потому, что ваш цикл нажимает все кнопки «далее». Это фактически означает, что на какой бы из них вы ни нажали, он будет нажат дважды — один раз вручную и один раз с помощью кода. Кроме того, событие click вызывается снова и снова, потому что каждый раз, когда вы вызываете «click», он снова запускает обработчик событий.

Лучшим подходом было бы определить, к какому календарю относится кнопка, а затем вызвать next метод FullCalendar для всех календарей, кроме этого. Что-то вроде этого:

   $(".fc-next-button").click(function () {
    var calendar = $(this).closest(".calendar");
    $(".calendar").not(calendar).fullCalendar('next');
  });
 

$(".calendar") Бит предполагает, что все элементы вашего календаря имеют общий атрибут класса, как в этой демонстрации: https://codepen.io/ADyson82/pen/OJVMPVy?editable=trueamp;editors=001

Комментарии:

1. Спасибо! это сделало это за меня!