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

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

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

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

JavaScript

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

Q&A

解決済

1回答

7622閲覧

(jQueryUI)SelectableとSelectableの連携についてでクリック選択のみ有効にしたい

KazuyoshiGoto

総合スコア10

jQuery UI

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

JavaScript

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

0グッド

2クリップ

投稿2015/03/16 10:12

https://gist.github.com/mattandersen/9777423
こちらのコードをもとに下記のコードのようにして現在利用しています。

lang

1$('.sortable').selectable({ 2 cancel: ',.sort-handle, .ui-selected, .zerocase', 3 filter: '> li' 4}).sortable({ 5 items: "> li", 6 handle: '.sort-handle, .ui-selected', 7 8 helper: function(e, item) { 9 if ( ! item.hasClass('ui-selected') ) { 10 item.parent().children('.ui-selected').removeClass('ui-selected'); 11 item.addClass('ui-selected'); 12 } 13 var selected = item.parent().children('.ui-selected').clone(); 14 item.data('multidrag', selected).siblings('.ui-selected').remove(); 15 return $('<li/>').append(selected); 16 }, 17 18 stop: function(e, ui) { 19 var selected = ui.item.data('multidrag'); 20 ui.item.after(selected); 21 ui.item.remove(); 22 } 23});

lang

1<ul class="sortable"> 2 <li><i class="sort-handle"></i>list</li> 3 <li><i class="sort-handle"></i>list</li> 4 <li><i class="sort-handle"></i>list</li> 5</ul> 6

このコードの場合、Selectableによって選択状態の要素のみをSortableで並び替えできる仕組みになっています。

「sort-handle」の部分だけはSelectableの対象外にして直接ドラッグ可能ですが、ハンドルに頼らず選択していない場合も直接ドラッグでSortableが効くようにしたいと考えています。

要件は下記です。

  • Selectableの投げ縄ツール的ドラッグ選択を無効化
  • クリックで単一選択は生かす
  • Ctrl+クリックで複数選択は生かす

もしご存知の方がいましたら教えていただければ幸いです。

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

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

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

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

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

guest

回答1

0

自己解決

jQuery Selectableは利用をやめ、選択処理のみ普通に組んだことで自己解決しました。

lang

1//sortable内リスト項目選択 2$('.sortable > li').live('click', function() { 3 //ctrlクリックでなければ選択を解除する(ctrlクリックで複数選択) 4 if (!event.ctrlKey) { 5 $(this).parent().children().each(function(i) { 6 $(this).removeClass('ui-selected'); 7 }); 8 } 9 $(this).addClass('ui-selected'); 10}); 11//選択済み要素をクリックで解除 12$('.ui-selected').live('click', function() { 13 $(this).removeClass('ui-selected'); 14}); 15 16$('.sortable').sortable({~

投稿2015/03/17 08:52

KazuyoshiGoto

総合スコア10

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問