在Fullcalendar提示上获取qTip2 Div ID

时间:2014-11-26 11:24:02

标签: javascript jquery fullcalendar qtip2

我的Fullcalendar活动提供了qTip2提示。它们使用唯一的顺序Div ID自动渲染,例如

<div id="qtip-0" ...
<div id="qtip-1" ...
<div id="qtip-2" ...
etc ...

我需要直接与这些Div沟通,例如:

function qtip_do_something(DivID){
    $('#qtip-' + DivID).... do something
}

我正在努力识别每个qTip的特定Div ID。

我想通过事件内容中的函数调用将此ID传递给函数,如下所示:

eventRender: function (event, element) {
    element.qtip({
        content: {
                text: '<a href="#" onclick="qtip_do_something(' + div.id + '); return false;">Do something</a>'
        } 

注意:我在上面的示例中使用了div.id来说明我想要这样做。

有谁知道怎么做?或者提供相同功能的替代方案。感谢。

1 个答案:

答案 0 :(得分:0)

答案是根据需要将ID作为JSON或其他来源的一部分传入,然后在元素中使用id: event.id命名:

eventRender: function (event, element) {
    element.qtip({
        id: event.id,        
        content: {
                text: '<a href="#" onclick="qtip_do_something(' + event.id + '); return false;">Do something</a>'
        } 

附加说明(2014年12月):

在更改周和月之间的视图(for-instance)时,不会删除fullcalendar中的qTips。但是,当您从一个视图移动到另一个视图时,提示将停止绑定。如果您尝试与在另一个视图中使用自定义ID 1234创建的现有提示进行交互,因为它已不再绑定,则会创建新ID,但已使用原始提示获取了ID 1234,并且已提供新ID这个新的提示。

您可以在控制台中看到此行为,新提示可能类似于qtip-0

我通过删除在点击下一个,上一个,月等按钮时创建的所有提示来解决此问题:

function destroy_all_qtips(){
        $('.qtip').each(function(){
                $('div.qtip:hidden').qtip('destroy',true);
                $('div.qtip:visible').qtip('destroy',true);
        })
}

的onload:

$('.prev-button').click(function(){
    destroy_all_fc_qtips();
});
$('.next-button').click(function(){
     destroy_all_qtips();
});
$('.today-button').click(function(){
    destroy_all_qtips();
});
$('.month-button').click(function(){
    destroy_all_qtips();
});
$('.agendaWeek-button').click(function(){
    destroy_all_qtips();
});
$('.agendaDay-button').click(function(){
     destroy_all_qtips();
});    

希望这有帮助