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

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

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

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

jQuery

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

HTML

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

Q&A

解決済

1回答

4078閲覧

jstreeを使用してドラッグを行い、ツリー以外の箇所にドロップしたい

taiyo-2017

総合スコア49

JavaScript

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

jQuery

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

HTML

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

0グッド

0クリップ

投稿2018/04/10 08:25

編集2018/04/10 09:09

お世話になっております。

jstreeを使ってツリー構造を作成しつつ、
ツリーの内容をドラッグアンドドロップしたいと考えています。

具体的な動作としては、
ツリーの項目をドラッグして、ツリー以外の箇所にドロップしたいです。
(ドラッグした項目をコピーして貼り付ける、というイメージです)
また、複数選択を無効、ツリー内での移動を無効にしてソートも行えないようにしたいと思っています。

現在のコード

html

1<!-- 移動元ツリー --> 2<div id="divTest"> 3 <ul> 4 <li> 5 <span>Test</span> 6 <ul> 7 <li> 8 <span>グループ1</span> 9 <ul> 10 <li><span>aaa</span></li> 11 <li><span>bbb</span></li> 12 </ul> 13 </li> 14 </ul> 15 </li> 16 </ul> 17</div> 18 19<!-- ドロップ箇所 --> 20<div style="width:100px; height:50px;"> 21 <!-- ドラッグしてここに「<span>aaa</span>」や「<span>Test</span>」を貼り付ける --> 22</div>

JavaScript

1 $(function(){ 2 // jstree実装 3 $('#divTest').jstree({ 4 "core" : { 5 "check_callback" : true 6 }, 7 "plugins" : [ "dnd" ] // ツリー内でドラッグアンドドロップを行えるようにする 8 }); 9 });

公式サイトなどを見たのですが理解しきれていない状態です。
現在は公式サイトなどを参考に、ツリー内でのドラッグアンドドロップ、
ソートが行える状態にはなっています。

また、別の箇所ではツリー形式ではない箇所でドラッグアンドドロップを行うために
sortableを使用しています。
jstreeとsortableを合わせたような書き方も出来るのでしょうか?

htmlやJavaScriptでどういった書き方をすることで実装できるのか、
またはjstreeのみでは実装不可能なのか、代替案などは存在するのか、など
参考となるサイトや、コードなども教えていただければと思います。

よろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

HTML ドラッグ&ドロップ APIを使えば可能です.
https://developer.mozilla.org/ja/docs/Web/API/HTML_Drag_and_Drop_API

・・・が, UIスクリプトの中でも最強クラスに制御が難しい部類に入るため, 心してかかって下さい.
※例外系の処理が異常に多い上, それらの一つ一つが致命的な問題を引き起こすため(経験上)


そのため, このAPIを使わないようにドラッグ・ドロップ操作を真似ると良いかもしれません.

  • dragXX系のイベントは全てe.preventDefaultブラウザの動き(標準動作)を無効化する
  • mousedownイベントとmouseupイベントが発生した座標を元に,カーソル直下のノードをdocument.elementFromPointメソッドで取得し, その対応からデータの授受を行う.

ようにすれば, 何とかなるかもしれません.

https://developer.mozilla.org/ja/docs/Web/API/Document/elementFromPoint

とは言え, 既に導入しているプラグインとの兼ね合いもありますから, 本当にうまく行くかどうかは慎重に検証する必要があります.

投稿2018/04/10 08:49

編集2018/04/10 09:25
defghi1977

総合スコア4756

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

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

taiyo-2017

2018/04/10 09:07

回答ありがとうございます! ある程度のhtmlやjsについて少しは知識がある、といった程度の知識しか持ち合わせていないため、 難易度の高いものには手を出しにくいところです…。(とは言っても難易度自体分かっていないところもあるのですが…) ほかにも何か案があれば教えていただければ幸いです。
taiyo-2017

2018/04/12 08:52

いろいろなメソッドが用意されているのですね!勉強になります。 今回はjstreeを使わず、sortableの機能を使って強引に実装した形となりましたが、今後のために学ばせていただきます。 改めて、回答ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問