1

当我将 fullCalendar 事件的 div 移出其容器 div 甚至移出 #calendar div 时(使用 .appendTo()、.append()、.insertBefore() 甚至 .clone(true, true).insertBefore() ... ),它失去了它的 onClick 绑定。也就是说,我的回调(最初传递给 fullCalendar 构造函数)不再触发。我希望我没有犯明显的错误,我是 javascript 和 fullCalendar 的新手。

有趣的事实:在 chrome 开发工具中,将事件移动到 dom 中的任何位置(手动单击并拖动它们)会保留它们的绑定。正因为如此,我认为制作自定义 listView 是小菜一碟,但是以编程方式移动事件 div 确实每次都会删除 onClick 事件。(如果有人知道开发工具行为的确切原因,我很想知道我是否可以用代码复制这种行为)

html结构是:

<div id="calendar" … >
<div class="fc-content" … >
    <table class="fc-view fc-view-month fc-grid"> … </table> //day header, moved by code
    <div … >... </div>     //this is the event container, also moved by the code below
    <div class="fc-view fc-view-basicDay fc-grid" ... >
        <table class="fc-view fc-view-month fc-grid"> … </table> //normal day header, intact
        <div … > ... </div>     //normal event container, intact

这是将表格(日期标题)和事件容器 div 移出的 javascript:

var fcViewBasicDay = $('.fc-view.fc-view-basicDay.fc-grid');

var table = fcViewBasicDay.children(".fc-border-separate");// table (day header)
table.clone(true).insertBefore(fcViewBasicDay);

var event_container = table.next(); //event container div
event_container.clone(true, true).insertBefore(fcViewBasicDay);

另一个有趣的事实:如果我更改最后一行 -> 我克隆原始事件 div 并将其附加到其原始位置,然后将真实事件移出,如下所示:

event1_moved.insertBefore(fcViewBasicDay); //inserting the "real div event"
event1_moved.clone(true, true).appendTo(fcViewBasicDay); //keeping a cloned one in place of the real

...然后,当我在第二天按下时,fullCalendar 不会刷新新事件——它会在第二天刷新相同的事件。

如果我只是移动它而不替换,页面将永远加载(无限循环?)。就好像克隆 div 会删除 fullCalendar 识别的某种“标记”。

PS 我经常查看此页面,如果需要更多信息,请告诉我。

4

0 回答 0