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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Google カレンダー

Google カレンダーは、Google社が提供する無料のスケジュール管理ツールです。パソコンやスマートフォン、タブレットなどからアクセスし、スケジュールの追加・変更が可能。Googleアカウントがあれば誰でも使用できます。

jQuery UI

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

ドラッグ&ドロップ

コンピューターのGUIにおいて、バーチャルなものを「つかむ」ことによって選択し、別の場所や他のバーチャルなものの上に動かす行為、またはその行為に対応していることを指す。

jQuery

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

Q&A

解決済

1回答

1813閲覧

ドラッグ&ドロップのcloneがうまくいきません

kenichi_myk

総合スコア14

Google カレンダー

Google カレンダーは、Google社が提供する無料のスケジュール管理ツールです。パソコンやスマートフォン、タブレットなどからアクセスし、スケジュールの追加・変更が可能。Googleアカウントがあれば誰でも使用できます。

jQuery UI

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

ドラッグ&ドロップ

コンピューターのGUIにおいて、バーチャルなものを「つかむ」ことによって選択し、別の場所や他のバーチャルなものの上に動かす行為、またはその行為に対応していることを指す。

jQuery

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

0グッド

0クリップ

投稿2019/11/09 01:50

編集2019/11/11 00:11

# 前提・実現したいこと
ドラッグ&ドロップした際に、元の要素がくっついてきてしまって困っています。

Googleカレンダーの様な動きをするカレンダーwebアプリを開発しています。
ドラッグしたら、元の要素をクローンしたまま「移動」、「コピー」「キャンセル」のボタンを表示させてから、アクションを完了させようとしています。

現状のソースでは、移動した先におかしな位置でクローンされた状態でついてきてしまっています。

html

1<div class="inner cal_tr"> 2 <div class="cal cal_td"> 3 <div class="cal_date day_1 1">1</div> 4 <div class="cal_plan"></div> 5 <div class="cal_body"></div> 6 </div> 7 <div class="cal cal_td"> 8 <div class="cal_date day_2 2">2</div> 9 <div class="cal_plan"></div> 10 <div class="cal_body"></div> 11 </div> 12 <div class="cal cal_td"> 13 <div class="cal_date day_3 3">3</div> 14 <div class="cal_plan"></div> 15 <div class="cal_body"></div> 16 </div> 17 <div class="cal cal_td"> 18 <div class="cal_date day_4 4">4</div> 19 <div class="cal_plan"></div> 20 <div class="cal_body"> 21 <div class="area_btn" draggable="true">有休/山田太郎</div> 22 <div class="area_btn" draggable="true">有休/山田花子</div> 23 </div> 24 </div> 25 <div class="cal cal_td"> 26 <div class="cal_date day_5 5">5</div> 27 <div class="cal_plan"></div> 28 <div class="cal_body"> 29 <div class="bar_area"> 30 <div class="area_btn" draggable="true" data-day="5">有休/山本 次郎</div> 31 </div> 32 </div> 33 </div> 34 <div class="cal cal_td"> 35 <div class="cal_date day_6 6">6</div> 36 <div class="cal_plan"></div> 37 <div class="cal_body"></div> 38 </div> 39 <div class="cal cal_td"> 40 <div class="cal_date day_7 7">7</div> 41 <div class="cal_plan"></div> 42 <div class="cal_body"></div> 43 </div> 44</div> 45<div id="cal_modal"> 46 <div class="btn_area"> 47 <div class="close_btn">閉じる</div> 48 </div> 49 <div class="modal_body"> 50 <div class="staff_name"><ruby><rt></rt></ruby></div> 51 <div class="sch_date_area"> 52 <div class="sch_tittle"> 53 <div class="tittle">日時</div> 54 <div class="sch_content sch_date"></div> 55 </div> 56 <div class="sch_tittle"> 57 <div class="tittle">休暇種類</div> 58 <div class="sch_content sch_type"></div> 59 </div> 60 <div class="memo_area"> 61 <div class="tittle">メモ</div> 62 <textarea name="" class="memo_text" cols="45" rows="10"></textarea> 63 </div> 64 </div> 65 <div class="submit">登録する</div> 66 </div> 67</div> 68

jQuery

1$(function(){ 2 $('#cal_modal').hide(); 3 $('.area_btn').draggable({ 4        revert:'invalid', 5 opacity: '0.8', 6 helper: 'clone', 7 snap: true, 8 containment: '.inner', 9 zIndex:'100000', 10 start: function(e,ui){ 11 // ui.helper.css('display', 'block'); 12 $(this).append(ui.helper.clone()); 13 $('.action_area').remove(); 14 } 15 }); 16 17 $('.cal_body').droppable({ 18 accept: '.area_btn', 19 tolerance: 'pointer', 20 hoverClass: "areahover", 21 drop: function(e, ui){ 22 ui.draggable.appendTo(this).css({top:'0',left:'0'}); 23 ui.draggable.after('<div class="action_area"><div class="move">移動</div><div class="copy">コピー</div><div class="cancel">キャンセル</div></div>'); 24 $('.move,.copy').click(function(){ 25 $('#cal_modal').show(); 26 }); 27 $('.close_btn').click(function(){ 28 $('#cal_modal').hide(); 29 }); 30 } 31 }); 32});

draggableがstartした時点での処理を入れてみたり、dropした時点で処理を入れと試してみましたが、なかなかうまくいきません。

よろしくお願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

動作のイメージがわかないのですが

クローンではなくui.helper自体をappendしてはいけないのでしょうか?

投稿2019/11/11 02:52

yambejp

総合スコア114843

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

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

kenichi_myk

2019/11/11 03:09

イメージとしては、ドロップした時に元の要素(ドラッグした箇所にある要素)とドロップした時の要素を両方表示させたいと考えています。 apendもトライしてみたのですが、うまくいかずでした。
kenichi_myk

2019/11/13 06:52

ui.helper自体をappendする場所を間違えていました。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問