У меня проблема с прикреплением Qtip к событию eventMousever вместо события eventRender в fullcalendar.Fullcalendar Qtip на mouseover вместо eventRender
Причина, по которой я хочу сделать это, заключается в том, что сервер, у которого есть данные, находится в другой стране, а задержка слишком долго для предварительной выборки всего текста qtip до загрузки календаря (до 8 секунд). Я написал функцию ajax, которая возвращает необходимую информацию о qtip, но проблема в том, что функция eventRender работает до того, как будет предоставлена информация qtip. Таким образом, наиболее логичным решением, на мой взгляд, было бы присоединение qtip в событии eventMouseover (отправить запрос на qtip-текст через ajax, а затем прикрепить qtip к элементу), но я не могу найти, как получить доступ к элементу события из события eventMouseover. (Я пытался подключить qtip к $ (this) события mouseover, но ничего не происходит (ошибок нет).
Я также пробовал другой подход. После того, как календарь был загружен, я извлекаю все всплывающие подсказки в и затем я пытаюсь использовать .fullCalendar ('rerenderEvents'), но это не работает должным образом -> Например, новые всплывающие подсказки не появятся, если вы не измените месяц просмотра/изменения, и только тогда новые всплывающие подсказки (извлеченные в фоновом режиме) будут появляются, так что я считаю, что rerenderEvents не работает
Любое предложение о том, как я могу решить эту проблему
Код для eventRender (который работает):.?
eventRender: function (event, element) {
if (event.qtip_id) {
element.qtip({
content: {
title: $('#' + event.qtip_title_id).html(),
text: $('#' + event.qtip_id).html()
},
position: {
my: 'bottom center',
at: 'top center',
//target: 'mouse',
adjust: { mouse: false },
viewport: $(window),
},
style: {
classes: 'bigger_font qtip-light qtip-shadow'
},
show: {
delay: 500
},
hide: {
fixed: true
}
});
}
код, который извлекает все всплывающие подсказки в фоновом режиме после того, как календарь был оказан:
for (i = 0; i<all_events.length; i++) {
if (all_events[i].qtip_id) {
//alert(all_events[i].title);
myevent = {
title: all_events[i].title,
url: all_events[i].url,
color: all_events[i].color,
form_id: all_events[i].form_id,
priority: all_events[i].priority,
qtip_id: all_events[i].qtip_id,
qtip_title_id: all_events[i].qtip_title_id,
qtip_dealer: all_events[i].qtip_dealer,
qtip_country_id: all_events[i].qtip_country_id,
qtip_customer_id: all_events[i].qtip_customer_id,
qtip_customer_name: all_events[i].qtip_customer_name,
qtip_id: all_events[i].qtip_id,
qtip_id_id: all_events[i].qtip_id_id
};
$.ajax({
type: 'POST',
url: 'ajax/calendar_generate_qtip.php',
data: myevent,
dataType: 'html',
success: function(data) {
$('#qtip_holder').html($('#qtip_holder').html() + data);
}
}).fail(function() {
});
}
}
$('#calendar').fullCalendar('rerenderEvents');
Так что мой вопрос: есть ли вообще возможность создавать и отображать QTIP в случае eventMouseover в полном календаре ? (поскольку eventMouseover не имеет доступа к элементу события, по крайней мере, я не вижу его).
Благодарим вас за чтение.
P.S. Прошу прощения за мой сломанный английский.
[updateEvent] (http://fullcalendar.io/docs/event_data/updateEvent/) может работать - в вашем цикле для all_events, вызывать $ ('# calendar'). fullCalendar ('updateEvent', all_events [ i]); – smcd