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

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

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

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

Q&A

解決済

3回答

7560閲覧

【jQueryUI】draggableとsortable使ったドラッグ&ドロップで、ドロップ後のオブジェクトを取得する方法

kazu56

総合スコア51

jQuery UI

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

0グッド

1クリップ

投稿2015/02/24 08:34

編集2015/02/24 08:41

タイトルの通りdraggableとsortable使ったドラッグ&ドロップで、ドロップ後のオブジェクトを取得する方法が知りたいです。

具体的なコードは以下になります。
liをドロップ後に、ドロップした方のli(ul#ul_2側)に対して処理を行いたいので、そちら側のliのオブジェクトを取得したいです。
ドロップ元(ul#ul_1側)のliオブジェクトの取得方法はあったのですが、上記はぐぐっても見つけることができませんでした。

どのようにすればよいでしょうかご教授ください。

html

lang

1<ul id="ul_1" style="width:350px;height: 150px;background: papayawhip;"> 2 <li class="dragg_item">鈴木 090-XXXX-XXXX</li> 3 <li class="dragg_item">佐藤 080-XXXX-XXXX</li> 4</ul> 5<ul id="ul_2" class="drop_area" style="width:350px;height: 150px;background: wheat;"> 6</ul>

javascript

lang

1$( function() { 2 $( '.drop_area' ).sortable( { 3 revert: true, 4 cursor: 'move', 5 receive: function(event, ui) { 6 //ここでドロップ後のli要素に対して処理を行いたい。 7 } 8 } ); 9 $( '.dragg_item' ).draggable( { 10 connectToSortable: '.drop_area', 11 helper: 'clone', 12 revert: 'invalid', 13 } ); 14} );

バージョン
jQuery 1.72
jQuery UI 1.8.18

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

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

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

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

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

guest

回答3

0

または、

lang

1$(function() { 2 $('.drop_area').sortable({ 3 revert : true, 4 cursor : 'move', 5 receive : function(event, ui) { 6 var item = $(this).find('.hoge'); 7 //ここでドロップ後のli要素に対して処理を行う。 8 $(item).removeClass('hoge'); 9 } 10 }); 11 12 $('.dragg_item').draggable({ 13 connectToSortable : '.drop_area', 14 //helper: 'clone', 15 helper : function() { 16 return $(this).clone().addClass('hoge'); 17 }, 18 revert : 'invalid', 19 }); 20});

これでいかがでしょうか

投稿2015/02/24 13:07

編集2015/02/24 13:11
blackonyx

総合スコア354

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

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

blackonyx

2015/02/26 00:15

ちょっと解説というか言い訳すると、レシーブイベントから件のクローンされたjQueryオブジェクトを直接取得することが難しいようで、ならばドラッグされた時にクローンを生成するヘルパーに細工をして目印となるクラスを追加してフラグを建てて、レシーブイベント時にあらためて取得する方法をとりました。
kazu56

2015/02/26 12:03

たくさんの回答ありがとうございます! 上記方法でうまくいきました。yunnさんと同じ方法なので、そちらにベストアンサーをつけました。すみません。
guest

0

単純に
---javascript
receive: function(event, ui) {
var item = ui.item;
// 処理
}

とかでしょうか

投稿2015/02/24 10:19

blackonyx

総合スコア354

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

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

kazu56

2015/02/24 10:25

ui.itemだと、ドロップ元(ul#ul_1側)のliオブジェクトが取れてくると思います。 ドロップ先(ul#ul_2側)のliオブジェクトが取得したいです。
blackonyx

2015/02/24 10:43

クローンの方ですか?
kazu56

2015/02/24 10:46

そうです!
blackonyx

2015/02/24 10:59

大した確信はないけどui.helperかな
kazu56

2015/02/24 11:40

console.logで確認したところui.helperはnullでした。。
blackonyx

2015/02/24 12:08

stop: function(event, ui){ var item=ui.item; // 処理 } とやると、ご所望の動作になるかと思いますが...
guest

0

ベストアンサー

$(this).children('li')
ということではなく、ドロップされたばかりのliをひとつだけ、ということですかね?
落とされた時ではなく、つかまれた時にAddClassしてあげて
落とされた時(またはキャンセル状態になった時)にRemoveClassしてあげる
というのは、よくある手だと思います。

もっと簡単な手があれば私も知りたいです。

投稿2015/02/24 09:34

yunn

総合スコア144

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

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

kazu56

2015/02/24 09:51

>ドロップされたばかりのliをひとつだけ、ということですかね? そうです! >つかまれた時にAddClassしてあげて >落とされた時(またはキャンセル状態になった時)にRemoveClassしてあげる なるほど!参考にさせて頂きます!
kazu56

2015/02/26 12:00

一番最初に解決手段を書いてくださったのでベストアンサーにしました。
cest-bien

2019/04/24 00:39

$(ui.draggable) でとれないですか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問