初めて質問します。説明不足等ございましたらご指摘お願いいたします。
jQueryUIのSelectableとSortableを使ってリストの選択をする画面を勉強しています。
実現可能か分からないことが出てきたため、ご教示いただければと思います。
実現したいこと
実現したいことは下記の2点です。
①ListA~ListCの項目を結果のリストのみに移動させたい。
これは、ListA~ListC に共通するクラスを宣言して、sortableのconnectWithに結果のクラスを指定すれば可能かと考えています。
②結果のリストに移動した項目は移動元のリストにしか移動できないようにしたい。
(ListAから移動した項目はListAにしか移動できない(ListB,ListCには不可))
※ただし、結果のリスト内での項目の移動は可能。
以下に現在のコードを載せます。
(どのリストへも移動可能な状態です)
現在のソースコード
html
1<body> 2<ul class="sortList ListA"> 3ListA 4 <li class='ui-state-default clsA'>A1</li> 5 <li class='ui-state-default clsA'>A2</li> 6 <li class='ui-state-default clsA'>A3</li> 7 <li class='ui-state-default clsA'>A4</li> 8 <li class='ui-state-default clsA'>A5</li> 9 <li class='ui-state-default clsA'>A6</li> 10</ul> 11<ul class="sortList ListB"> 12ListB 13 <li class='ui-state-default clsB'>B1</li> 14 <li class='ui-state-default clsB'>B2</li> 15 <li class='ui-state-default clsB'>B3</li> 16 <li class='ui-state-default clsB'>B4</li> 17 <li class='ui-state-default clsB'>B5</li> 18 <li class='ui-state-default clsB'>B6</li> 19</ul> 20<ul class="sortList ListC"> 21ListC 22 <li class='ui-state-default clsC'>C1</li> 23 <li class='ui-state-default clsC'>C2</li> 24 <li class='ui-state-default clsC'>C3</li> 25 <li class='ui-state-default clsC'>C4</li> 26 <li class='ui-state-default clsC'>C5</li> 27 <li class='ui-state-default clsC'>C6</li> 28</ul> 29 30<ul class="sortList ListResult"> 31結果 32</ul> 33 34 35<script> 36$(function(){ 37 $('.sortList').selectable({ 38 cancel: 'span, .ui-selected', 39 filter: '> li' 40 }) 41 $('.sortList').sortable({ 42 axis: 'xy', 43 cursor: "move", 44 connectWith:'.sortList', 45 helper: function(e, item){ 46 if(!item.hasClass('ui-selected')){ 47 item.parent().children('.ui-selected').removeClass('ui-selected'); 48 item.addClass('ui-selected'); 49 } 50 var selected = item.parent().children('.ui-selected').clone(); 51 ph = item.outerHeight() * selected.length; 52 item.data('multidrag', selected).siblings('.ui-selected').remove(); 53 return $('<tr/>').append(selected); 54 }, 55 items: '> li', 56 opacity: 0.9, 57 tolerance:"pointer", 58 59 stop: function(e, ui){ 60 var selected = ui.item.data('multidrag'); 61 ui.item.after(selected); 62 ui.item.remove(); 63 selected.removeClass(' ui-selected'); 64 $(selected).children("li").removeClass('ui-selected'); 65 } 66 } ); 67}); 68</script>
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。