質問編集履歴

1

内容が途中で投稿となってしまったためコードや説明の追加

2020/01/22 08:45

投稿

mori_reta
mori_reta

スコア10

test CHANGED
File without changes
test CHANGED
@@ -18,7 +18,9 @@
18
18
 
19
19
 
20
20
 
21
- 事前に作成してある要素(My Event1から5)はドラッグアンドドロップができるのですが、動的作成した要素はドラッグアンド
21
+ 事前に作成してある要素(My Event1から5)はドラッグアンドドロップができるのですが、動的作成した要素はドラッグアンドドロップできません。
22
+
23
+ 作成された要素がjQueryの処理が終わった後に追加されたもののためドラッグアンドドロップができないのかなという見解なのですが、改善方法がわからず困っています。
22
24
 
23
25
 
24
26
 
@@ -26,8 +28,194 @@
26
28
 
27
29
 
28
30
 
29
- ```ここに言語名を入力
31
+ ```html
32
+
30
-
33
+ <div id='external-events'>
34
+
31
- ソースコード
35
+ <p>
36
+
37
+ <strong>予定リスト</strong>
38
+
39
+ </p>
40
+
41
+ <div class='fc-event'>My Event 1</div>
42
+
43
+ <div class='fc-event'>My Event 2</div>
44
+
45
+ <div class='fc-event'>My Event 3</div>
46
+
47
+ <div class='fc-event'>My Event 4</div>
48
+
49
+ <div class='fc-event'>My Event 5</div>
50
+
51
+ <input type="text" id="favtext" style="display:none;">
52
+
53
+ <input type="button" id="addurl" value="追加" onclick="bar();" style="display:none;">
54
+
55
+ <label>
56
+
57
+ <img src="プラスオレンジ.png">
58
+
59
+ <input type="checkbox" style="display: none;" onchange="clickBtn1(this.checked)">
60
+
61
+ </label>
62
+
63
+ </div>
32
64
 
33
65
  ```
66
+
67
+
68
+
69
+ ```jquery
70
+
71
+ // ページ読み込み時の処理
72
+
73
+ $(document).ready(function () {
74
+
75
+
76
+
77
+ // 外部イベントを初期化します
78
+
79
+ // -----------------------------------------------------------------
80
+
81
+ $('#external-events .fc-event').each(function() {
82
+
83
+ // カレンダーがドロップ時にイベントをレンダリングできるようにデータを保存します
84
+
85
+ $(this).data('event', {
86
+
87
+ title: $.trim($(this).text()), // イベントタイトルとして要素のテキストを使用
88
+
89
+ stick: true //ユーザがナビゲートする時に維持する(renderEventメソッドのドキュメントを参照)
90
+
91
+ });
92
+
93
+
94
+
95
+ // jQuery UIを使用してイベントをドラッグ可能にします
96
+
97
+ $(this).draggable({
98
+
99
+ zIndex: 999,
100
+
101
+ revert: true, // イベントをもとの状態に戻します
102
+
103
+ revertDuration: 0 // ドラッグ後の元の位置
104
+
105
+ });
106
+
107
+ });
108
+
109
+
110
+
111
+
112
+
113
+ // カレンダーの設定
114
+
115
+ $('#calendar').fullCalendar({
116
+
117
+ header: {
118
+
119
+ left: 'prev,next today',
120
+
121
+ center: 'title',
122
+
123
+ right: 'month,agendaWeek,agendaDay'
124
+
125
+ },
126
+
127
+ height: 550,
128
+
129
+ firstDay: 1,
130
+
131
+ lang: "ja",
132
+
133
+ selectable: true,
134
+
135
+ selectHelper: true,
136
+
137
+ select: function(start, end) {
138
+
139
+ var title = prompt("予定タイトル:");
140
+
141
+ var eventData;
142
+
143
+ if (title) {
144
+
145
+ eventData = {
146
+
147
+ title: title,
148
+
149
+ start: start,
150
+
151
+ end: end
152
+
153
+ };
154
+
155
+ $('#calendar').fullCalendar('renderEvent', eventData, true); // stick? = true
156
+
157
+ }
158
+
159
+ $('#calendar').fullCalendar('unselect');
160
+
161
+ },
162
+
163
+ droppable: true, // これにより、モノをカレンダーにドロップできます
164
+
165
+
166
+
167
+ editable: true,
168
+
169
+ eventLimit: true,
170
+
171
+ });
172
+
173
+
174
+
175
+ });
176
+
177
+ ```
178
+
179
+ ```javascript
180
+
181
+ function bar() {
182
+
183
+ // 要素の作成と属性の指定
184
+
185
+ var newDiv = document.createElement("div");
186
+
187
+ var newTxt = document.createTextNode( document.getElementById("favtext").value );
188
+
189
+ newDiv.appendChild( newTxt );
190
+
191
+ newDiv.className = "fc-event";
192
+
193
+
194
+
195
+
196
+
197
+ // リストに追加
198
+
199
+ var list = document.getElementById("external-events");
200
+
201
+ let refNode = document.getElementById("favtext");
202
+
203
+ list.insertBefore( newDiv, refNode )
204
+
205
+ }
206
+
207
+
208
+
209
+ ```
210
+
211
+
212
+
213
+ ### 試したこと
214
+
215
+
216
+
217
+ ドラッグアンドドロップ部分のコードを
218
+
219
+ $(document).ready(function () {
220
+
221
+ の外に出してみたり、リスト作成のjavascript部分に加えたりしてみたのですが、効果ありませんでした。