当我将 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 我经常查看此页面,如果需要更多信息,请告诉我。