Я пытаюсь создать эффект наведения на номера дня, используя FullCalendar версии 3. Эффект, который я собираюсь сделать, похож на этот здесь .
Проблема в том, чтоВ версии 3 данные за каждый день разделены на 2 таблицы.Первая таблица - это поле «день», в то время как вторая таблица содержит такую информацию, как «номер дня» и «события».
Так что я пытаюсь выяснить, есть ли способ с помощью css, иесли нет, то jQuery.Вот пример первой таблицы:
<div class="fc-bg">
<table class="">
<tbody>
<tr>
<td class="fc-day fc-widget-content fc-sun fc-past" data-date="2018-04-01"></td>
<td class="fc-day fc-widget-content fc-mon fc-past" data-date="2018-04-02"></td>
<td class="fc-day fc-widget-content fc-tue fc-past" data-date="2018-04-03"></td>
<td class="fc-day fc-widget-content fc-wed fc-past" data-date="2018-04-04"></td>
<td class="fc-day fc-widget-content fc-thu fc-past" data-date="2018-04-05"></td>
<td class="fc-day fc-widget-content fc-fri fc-past" data-date="2018-04-06"></td>
<td class="fc-day fc-widget-content fc-sat fc-past" data-date="2018-04-07"></td>
</tr>
</tbody>
</table>
</div>
Это пример второй таблицы:
<div class="fc-content-skeleton">
<table>
<thead>
<tr>
<td class="fc-day-top fc-sun fc-past" data-date="2018-04-01">
<a class="fc-day-number" data-goto="{"date":"2018-04-01","type":"day"}">1</a>
</td>
<td class="fc-day-top fc-mon fc-past" data-date="2018-04-02">
<a class="fc-day-number" data-goto="{"date":"2018-04-02","type":"day"}">2</a>
</td>
<td class="fc-day-top fc-tue fc-past" data-date="2018-04-03">
<a class="fc-day-number" data-goto="{"date":"2018-04-03","type":"day"}">3</a>
</td>
<td class="fc-day-top fc-wed fc-past" data-date="2018-04-04">
<a class="fc-day-number" data-goto="{"date":"2018-04-04","type":"day"}">4</a>
</td>
<td class="fc-day-top fc-thu fc-past" data-date="2018-04-05">
<a class="fc-day-number" data-goto="{"date":"2018-04-05","type":"day"}">5</a>
</td>
<td class="fc-day-top fc-fri fc-past" data-date="2018-04-06">
<a class="fc-day-number" data-goto="{"date":"2018-04-06","type":"day"}">6</a></td>
<td class="fc-day-top fc-sat fc-past" data-date="2018-04-07">
<a class="fc-day-number" data-goto="{"date":"2018-04-07","type":"day"}">7</a>
</td>
</tr>
</thead>
</table>
</div>
CSS Я пробовал до сих пор:
.fc-day:hover ~ .fc-day-number {
background: #ddd;
border-radius: 50%;
color: #fff;
transition: background-color 0.2s ease;
}
Очевидная проблема заключается в том, что мне нужен способ связать две ячейки таблицы вместе fc-day
и fc-day-top
> fc-day-number
.
Мне интересно, является ли jQuery лучшим способом пойти иесли это так, я не очень силен в этом и не уверен, как связать их вместе.
ОБНОВЛЕНИЕ
Так что я "Kind Of" получил эту работу, используяJQuery.Подумав об этом еще раз, единственное, что связывает эти ячейки вместе, это атрибут data-date
.
Тем не менее, эффект выделения, который я хочу, является немного запаздывающим и не плавным, как CSS.Может быть, кто-нибудь может помочь мне очистить это или сделать его более эффективным?
$('.fc-day').hover(function() {
var myEm = $(this).attr('data-date');
$('.fc-day-top[data-date = '+myEm+'] .fc-day-number').css({'background-color': 'yellow'});
}, function() {
var myEm = $(this).attr('data-date');
$('.fc-day-top[data-date = '+myEm+'] .fc-day-number').css({'background-color':'transparent'})
});
ОБНОВЛЕНИЕ 2
Так что я получил это с помощью и с помощью некоторых из васздесь, в комментариях, я изменил добавление CSS с помощью jQuery вместо добавления / удаления классов.Я также обнаружил, что CSS по умолчанию для FullCalendar имеет класс fc-bg
, установленный в z-index
из 1. Это вызывает проблему, потому что эффект наведения мыши работает только в том случае, если ваша мышь находится в той части сетки, где нет ничего перекрывающего ее.Поэтому я пока что изменил z-index
на 5, что делает эффект при наведении.Следующая проблема - выяснить, как сделать ссылки в календаре доступными для клика с этим изменением.В любом случае, вот мой код:
$('.fc-day').hover(function() {
var myEm = $(this).attr('data-date');
$('.fc-day-top[data-date = '+myEm+'] .fc-day-number').addClass('on-hover');
}, function() {
var myEm = $(this).attr('data-date');
$('.fc-day-top[data-date = '+myEm+'] .fc-day-number').removeClass('on-hover');
});
ОБНОВЛЕНИЕ 3
Новая разработка.Когда календарь меняется на другой месяц или другой тип представления, функция jQuery для создания эффекта наведения больше не работает, если вы не обновите страницу.При дальнейшем поиске есть метод, который можно вызвать из FullCalendar viewRender
.Как я мог подключить свою функцию к этому?
viewRender: function (element) {
}