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 を複製して元の場所に追加し、次のように実際の 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