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

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

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

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

JavaScript

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

jQuery

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

Q&A

解決済

1回答

7616閲覧

jQuery UIのDraggableでSortable要素の上を通ると位置ズレ

Yasha_Wedyue

総合スコア830

jQuery UI

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

JavaScript

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

jQuery

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

0グッド

0クリップ

投稿2015/05/08 05:43

編集2015/05/11 05:14

上記の件で質問です。
下にDraggable要素でキーボードを作り、それをドラッグしSortable要素で作ったマスへ入れるというものを作成しています。
マスはキーとほぼ同じ大きさでスポっと入るような感じです。

上に書いたような基本的な動きは実装できたのですが、
マスが上下にあり、下のキーボードからキーを移動させて上のマスに入れようとしたとき、下のマスの上を通り過ぎるとものすごい位置ズレを起こしてしまいます。
下のマスの上を通らないようにするとうまくいくのですが、直感的な操作を目指して作っているので悩みどころです。

マスの上に重なった時、マスの子要素にキーが入っているのでこうなっているのかな、と思ったのですがよく分からりませんでした。
何か解決策などあれば、よろしくお願い致します。

lang

1<div class="main_content"> 2 <div class="grid_area"> 3 <div class="grid"></div> 4 </div><br> 5 <div class="grid_area"> 6 <div class="grid"></div> 7 </div> 8</div> 9 10<div class="keybord"> 11 <div class="key_area"> 12 <div class="key">A</div> 13 <div class="key">B</div> 14 <div class="key">C</div> 15 <!-- 以下、Zまで続く --> 16 </div> 17</div>

lang

1$(".key").draggable({ 2 connectToSortable: ".drop", 3 revert: "invalid", 4 helper: "clone", 5 stop: function(event, ui){ 6 // 移動先にあった子要素を消す 7 var par = ui.helper.parent(); 8 if(par.attr("class") != "key_area"){ 9 par.empty(); 10 par.append(ui.helper); 11 } 12 } 13}); 14 15$(".grid").sortable({ 16 // マスにキーを固定 17 cancel:".key" 18});

// 追記
その後自分で色々調べたのですが結局解決はしておりません。
何か代替案でもいいのでお答えいただけませんでしょうか?

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

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

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

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

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

guest

回答1

0

自己解決

自己解決いたしました。
恐らくこのような使い方をこのプラグインでは想定されていないのですね。
原因はなんとなくでしか把握できておりませんが、解決方法を提示します。

lang

1$(".key").draggable({ 2 connectToSortable: ".grid", 3 revert: "invalid", 4 helper: "clone", 5 6 // 以下、追加 7 drag: function(event, ui){ 8 // helperの位置をキーと同じ位置に指定(基準点) 9 $(".key_area").append(ui.helper); 10 /* ズレは高さにしか起きない様子なので 11 高さにズレが生じた場合、基準点を元に修正する */ 12 if(ui.offset.top > ui.position.top) ui.position.top = ui.offset.top; 13 }, 14 // 追加ここまで 15 16 stop: function(event, ui){ 17 // 移動先にあった子要素を消す 18 var par = ui.helper.parent(); 19 if(par.attr("class") != "key_area"){ 20 par.empty(); 21 par.append(ui.helper); 22 } 23 } 24});

以上です。何度も同じような質問をしてしまい、申し訳ございませんでした。
同じようにして悩んでいらっしゃる方がいれば参考にしていただければ幸いです。

投稿2015/05/11 09:21

Yasha_Wedyue

総合スコア830

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問