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 を複製して元の場所に追加し、次のように実際の 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 私はこのページを頻繁にチェックしています。さらに情報が必要な場合は教えてください。