質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
jQuery UI

jQuery UI はjQuery公式のインターフェースライブラリであり、対話型のウェブアプリケーションを作る際に役立ちます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

3回答

1175閲覧

jQueryの処理後に追加したものをドラッグしたい

mori_reta

総合スコア10

jQuery UI

jQuery UI はjQuery公式のインターフェースライブラリであり、対話型のウェブアプリケーションを作る際に役立ちます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2020/01/22 08:43

編集2020/01/22 08:45

前提・実現したいこと

イメージ説明

予定リストにある要素を日付へドラッグアンドドロップできるようにしようとしています。
ドラッグアンドドロップの部分は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部分に加えたりしてみたのですが、効果ありませんでした。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

uiで処理するようにお伝えしたと思うのですが・・・

投稿2020/01/22 09:15

yambejp

総合スコア114769

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yambejp

2020/01/22 09:16

新しい要素を挿入する際に、draggable()を実行するだけです。
guest

0

イベント初期化処理をfunctionにして、bar追加後にコールしてみてはどうでしょう?

JavaScript

1$(document).ready(function () { 2  initEvent(); //<-- 3 (略) 4} 5 6function bar(){ 7 (略) 8 list.insertBefore( newDiv, refNode ) 9 initEvent(); //<-- 10} 11 12function initEvent(){ 13 $('#external-events .fc-event').each(function() { 14 (略) 15 }); 16}

投稿2020/01/22 09:07

Masakin

総合スコア192

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

自己解決

要素を作成した際にドラッグアンドドロップの要素を付与する

javascript

1 // 追加した要素を ドラッグ可能にする 2 $(newDiv).draggable({ 3 zIndex: 999, 4 revert: true, // イベントをもとの状態に戻します 5 revertDuration: 0 // ドラッグ後の元の位置 6 }); 7 $(newDiv).data('event', { 8 title: $.trim($(newDiv).text()), //イベントのタイトルとして要素のテキストを使用します 9 backgroundColor: divcolor.value,//--- 10 borderColor:divcolor.value,//--- 11 stick: true //ユーザーがナビゲートするときに維持する(renderEventメソッドのドキュメントを参照) 12 });

投稿2020/01/30 02:21

mori_reta

総合スコア10

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問