FullCalendar 4.2 Как удалить класс CSS из всех событий при нажатии на событие? - PullRequest
0 голосов
/ 17 февраля 2020

Я пытаюсь удалить класс CSS ('selected') из любых / всех событий в FullCalendar 4.2 при нажатии на событие. Идея заключается в том, что одновременно может быть выбрано только одно событие. Я смог добавить класс к событию, используя обработчик eventClick и некоторую помощь от Rodri go Medeiros здесь, в Stackoverflow (спасибо, Rodri go!). Но сейчас я не могу удалить его, используя jQuery removeClass. Вот мой JS ....

var calendarEl = document.getElementById('calendar');   
var calendar = new FullCalendar.Calendar(calendarEl, {
      plugins: [ 'dayGrid', 'timeGrid', 'list' ],
      header: {
        left: 'prevYear,prev,next,nextYear',
        center: 'title',
        right: 'today dayGridMonth,timeGridWeek,timeGridDay,listWeek'
      },
      defaultView: 'dayGridMonth',
      eventLimit: true,
      views: {
        month: {
          eventLimit: 2 
        }
      },
    eventClick:function(info){
            var id = info.event.extendedProps.timeslotid;

            $.ajax({
                url: 'index.php?option=com_cases&task=shifts.timeslotform&id='+id,
                type: 'post',
                dataType: 'html',
                async: true,
                success: function(response){
                    if (response) {
                        $('a.fc-day-grid-event.selected').removeClass('selected'); //here's the issue   
                        info.event.setProp('classNames', 'selected')
                        $('#sbcontent').empty();
                        $('#sbcontent').append(response);
                    }                           
                }
            });
        },
      events: 'index.php?option=com_cases&task=shifts.buildevents',
      eventTimeFormat: { // like '14:30:00'
        hour: 'numeric',
        minute: '2-digit',
        hour12: true
      }
});
calendar.render();

Я пробовал несколько вариантов селекторов JQuery, но, похоже, ни один из них не работает. Я также попытался переместить строку removeClass над вызовом ajax. В этом тесте «выбранный» класс удаляется, но затем он сразу же добавляется обратно к событию вместе со всеми другими событиями, по которым щелкнули. Поэтому, если вы нажмете 5 отдельных событий, все 5 из этих событий будут иметь класс «selected».

Я также пробовал getEvents (), но выдает ошибку («Uncaught TypeError: calendar.getEvents ( ...) это не функция '). Я помещаю следующий код прямо над вызовом ajax в обработчике eventClick.

calendar.getEvents()(function(event) {
    event.setProp('classNames', '');
});

Любая помощь очень ценится!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...