ドラッグ可能なものの巨大なリストを操作する際のパフォーマンスを改善しようとして、この問題に遭遇しました。親コンテナーを削除して、アイテムのバッチ処理が高速になるように (各処理で DOM の更新が発生しないようにするため)、後でコンテナーを再挿入すると、ドラッグ可能オブジェクトが機能しなくなりました。例えば
<div id="listParent">
<div id="listWrapper">
<ul id="draggableList">
<li class="draggable">Item 1</li>
<li class="draggable">Item 2</li>
<li class="draggable">Item 3</li>
<li class="draggable">Item 4</li>
<li class="draggable">Item 5</li>
<!-- many more items here -->
</ul>
</div>
</div>
<script type="text/javascript">
$(function() {
$( ".draggable" ).draggable({
revert: true
});
function filterItems(text) {
var p = $('#listWrapper').remove();
// for each <LI> element, hide the ones who do not match `text`'s value
p.appendTo('#listParent');
}
// ...
});
</script>
したがって、たとえば を呼び出すfilterItems('foo');
と、アイテムがドラッグ可能ではなくなります。<LI>
要素にドラッグ可能を再度適用する必要がありますか? もしそうなら、とにかく後で何かを再適用しなければならない場合、プロセスをスピードアップするために親を削除する意味はありませんか?