を使用してドロップ可能な範囲内ソート可能なドラッグ可能要素を作る決議jQueryのUI
は、だから私はより多くのビットを属性connectWith
でsortable()
を研究し、解決策は、私が予想よりも簡単だったが、私は一種の後方ので、それについて考えていましたdraggable()
およびdroppable()
である。ここで
はフィドルです:http://jsfiddle.net/DKBU9/12/
元の質問は次のとおりです。
は、これは私が別々に保持されなければならないと感じた以前のSOの質問の拡張です。
元の質問はjQuery UI - Clone droppable/sortable list after drop eventです。クローンされた要素に対する削除可能なハンドラの再初期化に関するものです。
しかし、私は最初のリストからドラッグされた要素をドロップ可能リスト内でソートできるようにしようとしています。 SOこれらの投稿を訴えると肥大化するのが好きのでhttp://jsfiddle.net/DKBU9/7/
し、必要なコード:ここで
は、基本的に元の質問の結果として、現在の動作を示すフィドルある
HTML
<ul id="draggables">
<li>foo1</li>
<li>foo2</li>
<li>foo3</li>
</ul>
<ul class="droppable new">
</ul>
JS
$(function() {
$('#draggables > li').draggable({
appendTo: 'document',
revert: 'invalid'
});
$('.droppable > li').draggable({
appendTo: 'document',
revert: 'invalid'
});
$('#draggables').droppable({
accept: '.droppable > li',
drop: function(event, ui) {
ui.draggable.detach().css({top: 0,left: 0}).appendTo($(this));
cleanUp();
}
});
initDrop($('.droppable'));
});
function initDrop($element) {
$element.droppable({
accept: function(event, ui) {
return true;
},
drop: function(event, ui) {
if($(this).hasClass('new')) {
var clone = $(this).clone();
$(this).after(clone);
$(this).removeClass('new');
initDrop(clone);
}
ui.draggable.detach().css({top: 0,left: 0}).appendTo($(this));
cleanUp();
}
}).sortable({
items: 'li',
revert: false,
update: function() {
cleanUp();
}
});
}
function cleanUp() {
$('.droppable').not('.new').each(function() {
if($(this).find('li').length == 0) {
$(this).remove();
}
});
}
参考質問:Jquery UI combine sortable and draggable
私はこの結果を正確には私が達成しようとしているもの、具体的には受け入れられた答えのコメントで提供されているものとして、私の問題を解決するために、私は、マイナーな違いを考慮して、自分のコードにどのように適合させるかを理解できないようです。たとえば、その質問のフィドルは、実際の要素をドラッグするのではなく、ドラッグ可能な要素を複製し、鉱山とは異なり、要素を最初のリストに戻すことはできません。
私のコードのためにその結果を得ようとするどんな助けも大歓迎です。
また、この例では、accept
属性がtrueを返す関数として設定されています。これの理由は何ですか?それは何かを受け入れるか、またはドラッグ可能な要素を受け入れることを意味していませんか?
EDIT:connectWith属性でsortable()を使用したカップルの回答を読みましたが、何らかの理由で私が最初のリストを必要としなかったためソート可能です。しかし、sortable()を単独で使用すると、私の後ろの機能が得られるように見えますが、まだすべてのイベントハンドラに適応していません。
私の答えはあなたの編集ごとにソート可能ではないが、あなたがソート可能であればOKであれば、もっとシンプルなので行くべきだと思う。 – acarlon
ええ、あなたの時間と労力に本当に感謝していますが、最初のリストがソート可能であることは本当に大きな問題ではないので、これに固執します。 – Bobe