2015-11-23 5 views
1

У меня проблема с прикреплением 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. Прошу прощения за мой сломанный английский.

+1

[updateEvent] (http://fullcalendar.io/docs/event_data/updateEvent/) может работать - в вашем цикле для all_events, вызывать $ ('# calendar'). fullCalendar ('updateEvent', all_events [ i]); – smcd

ответ

1

Если вы хотите получить доступ к элементу события в eventMouseover, это возможно.

В документах FullCalendar четко сказано, что в функции обратного вызова eventMouseover «this» установлен элемент <div> события, а $ (this) предоставляет тот же элемент-объект, который вы получаете при обратном вызове eventRender. http://fullcalendar.io/docs/mouse/eventMouseover/

Вы упомянули

(я пытался креплении QTIP до $ (это) события наведения мыши, но ничего не происходит

Но я считаю, что это нормальное событие Mouseover и не callback

+0

Да, я попробовал немного различить рента и $ (это) действительно работали, хотя мне пришлось добавить 'show: { event: 'mouseover', Задержка: 500, ready: true },' к моему qtip-коду в событии eventMouseover – uFlock

Смежные вопросы