前提・実現したいこと
予定リストにある要素を日付へドラッグアンドドロップできるようにしようとしています。
ドラッグアンドドロップの部分はjQuery、動的要素の作成はjavascriptを使用して作成しています。
また、図にあるMy Event1から5までの要素はHTMLで事前に作成してあるものです。
発生している問題・エラーメッセージ
事前に作成してある要素(My Event1から5)はドラッグアンドドロップができるのですが、動的作成した要素はドラッグアンドドロップできません。
作成された要素がjQueryの処理が終わった後に追加されたもののためドラッグアンドドロップができないのかなという見解なのですが、改善方法がわからず困っています。
該当のソースコード
html
1<div id='external-events'> 2 <p> 3 <strong>予定リスト</strong> 4 </p> 5 <div class='fc-event'>My Event 1</div> 6 <div class='fc-event'>My Event 2</div> 7 <div class='fc-event'>My Event 3</div> 8 <div class='fc-event'>My Event 4</div> 9 <div class='fc-event'>My Event 5</div> 10 <input type="text" id="favtext" style="display:none;"> 11 <input type="button" id="addurl" value="追加" onclick="bar();" style="display:none;"> 12 <label> 13 <img src="プラスオレンジ.png"> 14 <input type="checkbox" style="display: none;" onchange="clickBtn1(this.checked)"> 15 </label> 16</div>
jquery
1 // ページ読み込み時の処理 2$(document).ready(function () { 3 4 // 外部イベントを初期化します 5 // ----------------------------------------------------------------- 6 $('#external-events .fc-event').each(function() { 7 // カレンダーがドロップ時にイベントをレンダリングできるようにデータを保存します 8 $(this).data('event', { 9 title: $.trim($(this).text()), // イベントタイトルとして要素のテキストを使用 10 stick: true //ユーザがナビゲートする時に維持する(renderEventメソッドのドキュメントを参照) 11 }); 12 13 // jQuery UIを使用してイベントをドラッグ可能にします 14 $(this).draggable({ 15 zIndex: 999, 16 revert: true, // イベントをもとの状態に戻します 17 revertDuration: 0 // ドラッグ後の元の位置 18 }); 19 }); 20 21 22 // カレンダーの設定 23 $('#calendar').fullCalendar({ 24 header: { 25 left: 'prev,next today', 26 center: 'title', 27 right: 'month,agendaWeek,agendaDay' 28 }, 29 height: 550, 30 firstDay: 1, 31 lang: "ja", 32 selectable: true, 33 selectHelper: true, 34 select: function(start, end) { 35 var title = prompt("予定タイトル:"); 36 var eventData; 37 if (title) { 38 eventData = { 39 title: title, 40 start: start, 41 end: end 42 }; 43 $('#calendar').fullCalendar('renderEvent', eventData, true); // stick? = true 44 } 45 $('#calendar').fullCalendar('unselect'); 46 }, 47 droppable: true, // これにより、モノをカレンダーにドロップできます 48 49 editable: true, 50 eventLimit: true, 51 }); 52 53});
javascript
1function bar() { 2 // 要素の作成と属性の指定 3 var newDiv = document.createElement("div"); 4 var newTxt = document.createTextNode( document.getElementById("favtext").value ); 5 newDiv.appendChild( newTxt ); 6 newDiv.className = "fc-event"; 7 8 9 // リストに追加 10 var list = document.getElementById("external-events"); 11 let refNode = document.getElementById("favtext"); 12 list.insertBefore( newDiv, refNode ) 13} 14
試したこと
ドラッグアンドドロップ部分のコードを
$(document).ready(function () {
の外に出してみたり、リスト作成のjavascript部分に加えたりしてみたのですが、効果ありませんでした。

回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/01/22 09:16